首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ByteArrayInputStream vs own类

ByteArrayInputStream vs own类
EN

Stack Overflow用户
提问于 2012-03-14 23:15:20
回答 3查看 377关注 0票数 1

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

代码语言:javascript
复制
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()方法有什么不同?这个函数看起来是一样的,只是改变了位置,读取字节来跳过它们。

EN

回答 3

Stack Overflow用户

发布于 2012-03-14 23:20:37

您的read()实现与ByteArrayInputStream中的实现惊人地相似

代码语言:javascript
复制
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}

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

票数 2
EN

Stack Overflow用户

发布于 2012-03-14 23:22:00

无论如何,如果Java提供了一个具有特定功能的类,那么就使用这个类,更好地利用自己的时间。与您的代码相比,ByteArrayInputStream将多存储两个整数,因此差异可以忽略不计。它的read方法本质上与您编写的方法相同。

在性能方面,通过一次读取多个字节将获得更好的结果。同样,ByteArrayinputStream也为您提供了此功能。

票数 2
EN

Stack Overflow用户

发布于 2012-03-14 23:24:40

我通常会考虑使用现有的java.io类。

  1. 它将经过很好的调试
  2. 它将为您节省开发时间
  3. 它将实现适当的接口等要与其他类很好地交互
  4. 其他开发人员将会熟悉它

<代码>G210

除非有令人信服的理由,否则我真的不会重新发明轮子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9704724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档