专栏首页Apache IoTDBjava 字节流入门(内存数组流)

java 字节流入门(内存数组流)

上篇文章介绍了两种常用的文件输入输出流:java 字节流入门(文件流)

其中向文件中写入的数据都是预先定义好的字节数组 byte[] ,本文介绍另一种在内存中维护字节数组更常用的方式:内存数组输入输出流。

内存数组流,就是和内存中的数组相关的一个流,可以将字节数组写到输出流中,也可以将字节数组从输入流中读出来,不涉及磁盘。

内存数组输出流:ByteArrayOutputStream

内存数组输出流可以看成一个可自动扩容的 byte 数组,可以往里写字节。

默认初始化 32 个字节的大小。

最大容量是 2^31-9 个字节(2G)。只要数据不超过2G,都可以往里写。每次写数据之前,会先计算需要的容量大小,如果需要扩容,扩大到 max{原来的两倍,需要的容量大小}

此外,还可以将 ByteArrayOutputStream 中的字节数组拿出来,拿出来的只是真实存在的数据量。

为了验证扩容方式,把其内部缓冲区拿出来

工具类:

主要逻辑:

结果:

内存数组输入流:ByteArrayInputStream

这个输入流就是把一个字节数组 byte[] 包装了一下,使其具有流的属性,可顺序读下去。还可标记跳回来继续读。

结果:

为什么要用 ByteArrayInputStream 而不直接操作 byte 数组?有以下几种情况:

(1)其他接口需要一个 InputStream,而你只有一个 byte[],这时候必须包装一下。

(2)希望以流的方式操作字节数组。

如果其他地方只需要一个 byte[],就没必要包装了,直接传 byte[] 就好了。盲目使用流 是 流氓(大哥你可听到了!)

总结

这两个流都是对内存中的数据进行操作,在需要动态维护一个字节数组时,可以使用 ByteArrayOutputStream,这个变量通常叫 baos 。另外,此次代码和上次代码都放在 github 上了,可以点阅读原文,下边这个也是:

https://github.com/qiaojialin/Java-IO-Learning

致谢:东哥、大哥、康博

估计大部分人看完就返回了,懒得滑上去点关注了,放下来互利共赢~

本文分享自微信公众号 - IoTDB漫游指南(Apache-IoTDB),作者:乔帮主

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Apache IoTDB 系列教程-1:数据模型

    大家周末快乐!随着最近项目落地,0.10.0 即将发布,准备写一系列教程,今天第一篇,介绍 IoTDB 的数据模型和建模方式。

    Apache IoTDB
  • LSM-tree 基本原理及应用

    LSM-tree 在 NoSQL 系统里非常常见,基本已经成为必选方案了。今天介绍一下 LSM-tree 的主要思想,再举一个 LevelDB 的例子。

    Apache IoTDB
  • java 字节流入门(文件流)

    在编程语言的教材中,文件流大多是放在最后一章介绍的,而且大学不怎么考流,所以没有重视过。在开始学习 java 流时,发现大多博客上来就放一大家子类图,每次看到都...

    Apache IoTDB
  • Vue+Koa2 前后端分离项目线上部署

    昨天尝试部署一个 Vue+Koa2 的前后端分离项目,没想到因为前端项目部署的问题,卡了一整天,今天才终于找到了问题所在,成功解决。这篇文章主要谈谈:

    Chor
  • 11.14 VR扫描:谷歌不再和HTC合作开发Daydream一体机;诺基亚宣布放弃所有VR相关业务

    VRPinea
  • ubuntu开启root登陆

    互联网金融打杂
  • 从边缘到中心网络,为什么是ASIC?

    原文链接 / https://blog.cloudflare.com/asics-at-the-edge/

    LiveVideoStack
  • Linkerd基准测试

    更新5/30/2019:根据Istio团队的反馈,Kinvolk重新运行了一些Istio基准。结果在很大程度上与之前相似,Linkerd在延迟、内存占用(可能还...

    CNCF
  • AR与隐私

    之前因为开玩笑性质的在各个地方放了这个公众号,然后有不少小伙伴以为这里是技术性质的公众号,于是跑来学习…… 因为我一般发文章时才登一下后台,所以很多时候看到私信...

    沙因Sign
  • AI+AR,百度的如意算盘能够打得响吗?

    镁客网

扫码关注云+社区

领取腾讯云代金券