关闭

读取未知大小字节流的方法

534人阅读 评论(0) 收藏 举报

有一个InputStream,你需要把它的内容全部读到内存里,用一个byte[]存 储。怎么做?开一个大小为s的byte数组,然后读取一直到空间用完,然后开一个大小是2s的数组,把旧数组内容复制进来然后继续读。如果反复一直到数组 足够大。这应该是能想到最简单的解决方法。不过JDK提供了一个更fancy的工具来帮助我们完成这件事:ByteArrayOutputStream 。顾名思义,就是把字节流写到一个byte数组中。下面的例子展示了如何实际操作:

 



我猜ByteArrayOutputStream内部实现也用的是我上面说的方法,因为javadoc中有一句话“The buffer automatically grows as data is written to it.”。但是JDK提供的方法一般来说会比你自己写效率高一些,另外,有现成的方法为什么不拿来直接用呢?我就比较悲剧了,好多地方都是用自己写的方法 来读取的,比如读取图片上传啊,抓取URL这些。想改估计都改不过来了,整个一大悲剧。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:88472次
    • 积分:1197
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:58篇
    • 译文:0篇
    • 评论:36条
    文章分类
    最新评论