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

转载 2011年01月21日 01:14:00

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

 



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

相关文章推荐

SQL SERVER 2008 r2跨网段订阅出现”由于出现操作系统错误 1326。进程无法读取文件 登录失败: 未知的用户名或错误密码“解决方法

不同局域网订阅操作步骤 一、修改host文件以支持使用服务器名访问 1、两个不同域网段,A:10.224.5.x(ZB-0299-DB1), B:10.208.5.x(TC-0232-DB...

经典:手动脱未知壳的方法

  • 2011年01月02日 00:05
  • 8.31MB
  • 下载

未知宽高div水平垂直居中3种方法

未知宽高div水平垂直居中3种方法:1、transform与绝对定位方式。2、Flexbox方式。3、伪类方式...
  • rongku
  • rongku
  • 2014年10月25日 13:46
  • 5047

Gson解析JSON数据中动态未知字段key的方法

有时在解析json数据中的字段key是动态可变的时候,由于Gson是使用静态注解的方式来设置实体对象的,因此我们很难直接对返回的类型来判断。但Gson在解析过程中如果不知道解析的字段,就会将所有变量存...
  • jdsjlzx
  • jdsjlzx
  • 2017年08月06日 18:05
  • 1003

未知高度的div在父元素中水平垂直居中的方法

居中方法暂时找到两种: 1、父元素: 在父元素中使用: display: flex; justify-content: center; align-items: center; 这些属性,即可...

div垂直居中的N种方法 单行/多行文字(未知高度/固定高度)

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSSHack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的...
  • yezitoo
  • yezitoo
  • 2017年04月05日 10:22
  • 74

OpenCV在未知相机内参数情况下的立体图像矫正方法

很多时候我们不知道摄像机的内参数矩阵,并且我们也不太关注内参数到底是多少,因为我们仅仅关心如何得到两幅图像的稠密匹配,或者两幅图像的差别——例如我们只想计算两幅图像的视差图,或者说得到两幅立体图像对的...

Gson解析JSON中动态未知字段key的方法

前面一篇文章我介绍了gson的基本解析的方法。但是在享受Gson解析的高度封装带来的便利时,有时可能会遇到一些特殊情况,比如json数据中的key是动态可变的时候,需要特别解决。...

div垂直居中的N种方法 单行/多行文字(未知高度/固定高度)

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSSHack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的...
  • yjl3039
  • yjl3039
  • 2015年06月04日 18:11
  • 341

OpenCV在未知相机内参数情况下的立体图像矫正方法及注意事项

很多时候我们不知道摄像机的内参数矩阵,并且我们也不太关注内参数到底是多少,因为我们仅仅关心如何得到两幅图像的稠密匹配,或者两幅图像的差别——例如我们只想计算两幅图像的视差图,或者说得到两幅立体图像对的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取未知大小字节流的方法
举报原因:
原因补充:

(最多只允许输入30个字)