我想知道java.io包中的ByteArrayInputStream类是否适合使用?或者,如果要使用字节数组将其与自己的类进行比较,例如:

private int pos = 0;
private final byte[] total;

public Reader(final byte[] total) {
    this.total = total;
}

public int read() {
    return ((int) total[pos++]) & 0xFF;
}


字节不是从文件获得的,它应该是服务器接收字节/数据包。该功能与ByteArrayInputStream中的功能相同。我很好奇是否会使用ByteArrayInputStream类,它是否增加了放入Java内存的字节数?但基本上,从性能角度来看,哪个会更推荐?

谢谢。

编辑*我想我已经回答了,我想知道mark()和skip()方法之间有什么区别?功能似乎是相同的,只是一个改变了位置,一个读取了字节以跳过它们。

最佳答案

您对read()的实现惊人地类似于ByteArrayInputStream中的实现:

public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}


只有额外的开销来自synchronized,我认为这可以忽略不计。 ByteArrayInputStream基本上是byte[]的薄包装。您想实现什么?

09-25 15:56