我想知道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()方法有什么不同?这个函数看起来是一样的,只是改变了位置,读取字节来跳过它们。
发布于 2012-03-14 23:20:37
您的read()实现与ByteArrayInputStream中的实现惊人地相似
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}只有额外的开销来自synchronized,我认为这可以忽略不计。ByteArrayInputStream基本上是byte[]的一个薄薄的包装器。你想实现什么目标?
发布于 2012-03-14 23:22:00
无论如何,如果Java提供了一个具有特定功能的类,那么就使用这个类,更好地利用自己的时间。与您的代码相比,ByteArrayInputStream将多存储两个整数,因此差异可以忽略不计。它的read方法本质上与您编写的方法相同。
在性能方面,通过一次读取多个字节将获得更好的结果。同样,ByteArrayinputStream也为您提供了此功能。
发布于 2012-03-14 23:24:40
我通常会考虑使用现有的java.io类。
<代码>G210
除非有令人信服的理由,否则我真的不会重新发明轮子。
https://stackoverflow.com/questions/9704724
复制相似问题