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

转载 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这些。想改估计都改不过来了,整个一大悲剧。

字节流的四种读取方式速度测试

当然和你自己使用的文件大小有关,这里只是简单测试 代码如下: package com.smile.two; import java.io.BufferedInputStream; import ...
  • fan510988896
  • fan510988896
  • 2017年03月30日 14:54
  • 783

读取字节流的方法解决

如果不知道原文件的大小,可以这样: FileStream fs2 = new FileStream("2.txt", FileMode.Create); byte[] buffer = new b...
  • angel20082008
  • angel20082008
  • 2014年01月07日 08:10
  • 2768

如何获得通过socket传过来的字节流的长度

建立一个监听的socket,有客户端向该socket发送数据,每次的发送均不等长。     我如何在使用recv()函数前获得接受数据的长度呢?     我已找了论坛,可没有答案。     谢谢各位 ...
  • ulark
  • ulark
  • 2009年12月19日 18:16
  • 2542

字节流转换成字符流的方式和流输入的时候另一种加入换行方式

字节流转换成字符流的方式和流输入的时候另一种加入换行方式(可以用BufferedWriter.newLine()方法) 另一种加入换行方式:这样存入字符串,在存入d://a.txt中 late...
  • xuehuagongzi000
  • xuehuagongzi000
  • 2017年03月09日 23:50
  • 443

c# 正确读取存储中文,以及如何获取字节流编码

除非另外指定,StreamReader 的默认编码为 UTF-8,而不是当前系统的 ANSI 代码页。 因此读取简体中文会出现乱码,可以指定编码正确显示GB2312简体中文.StreamReader ...
  • xwchen
  • xwchen
  • 2008年02月27日 21:41
  • 715

C# 学习: 读取文件流,保存到字节中

最近在做文件数据读取的测试,C#的文件读取,保存到字节中,之前对这块不熟悉,Mark: Stream expectedSteam = new FileStream(path, FileMode.Ope...
  • rziqq
  • rziqq
  • 2016年11月10日 17:18
  • 1362

未知长度二进制流的读取

采用第三方工具处理网络流的时候,会面临一些问题,归纳如下:1、二进制流的打开   很简单,使用popen、pclose即可。Windows平台下则采用_popen, _pclose。头文件都是stdi...
  • maray
  • maray
  • 2010年09月26日 23:27
  • 2374

使用字节流和字符流读取文件

使用字节流的方式进行文件的读取并打印至控制台:                import java.io.File; import java.io.FileInputStream; impor...
  • xiu_shang
  • xiu_shang
  • 2015年09月13日 21:15
  • 1075

Java IO字节流读取文件总结

本文对javaIO字节流的读取方式做总结,两种基本的读取方式。
  • wenzhi20102321
  • wenzhi20102321
  • 2016年09月19日 11:08
  • 11393

java中用字节流读取文本时中文乱码

以我现在的能力结合网上的一些代码从新编写了一下,只能做到这样.大神们包含啊! 注:编写的代码和读取的文本字符编码要一致.无论缓冲的byte[]长度是多少都可以读取 import java.io.*; ...
  • zhengylsc
  • zhengylsc
  • 2013年12月09日 13:11
  • 8443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取未知大小字节流的方法
举报原因:
原因补充:

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