java - ByteArrayInputStream 与自己的类

标签 java

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

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[] 的薄包装。你想达到什么目的?

关于java - ByteArrayInputStream 与自己的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704724/

相关文章:

java - 为什么我的 HTTP 响应没有显示在浏览器中?

java - 使用硬盘空间作为 Java 堆?

java - 将Mysql表内容(sql查询返回的行)推送到java hashmap中

java - 使用synchronizedList时输入安全警告

java - 不可序列化异常,即使所有字段都是可序列化的

java - Java中违反DRY原则

java - 如何找出在 Swing 应用程序中消耗 KeyPressed 事件的内容?

Java:强制实现接口(interface)以扩展抽象类

java - 无法将位置参数传递到 HQL 查询中

java - 我应该在我的方法名称中使用 "get"-prefix 吗?