A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戴振良 黑马帝   /  2012-4-1 11:41  /  2519 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ByteArrayInputStream
ByteArrayIOutputStream

ByteArrayInputStream这个流可以通过带“一个字节数组”的构造函数创建一个流,然后用read方法可以读出这些字节数组
ByteArrayIOutputStream这个流可以通过wtrite方法写入一个字节数组,然后用toByteArray方法可以读出这个些字节数组

这样看,这两个流的功能都是写入数据,读出数据,功能不是一样吗?为什么要搞两个这样的类呢?它们有什么关联,我看到类似这样一对的其它类还有好几个,不知道这是怎么用的,有谁可以举一个必须要用ByteArrayInputStream、ByteArrayIOutputStream这个流的小例子,谢谢!!
{:soso__1620823281082563426_2:} {:soso__1620823281082563426_2:} {:soso__1620823281082563426_2:} {:soso__1620823281082563426_2:}

3 个回复

倒序浏览
看来你并没有理解内存、磁盘、终端(屏幕/键盘)、网络之间的关系。不知道我说的能否解决你的问题。。
你程序操作的数据都应该是在内存里面,内存是你操作的主对象,把数据从其他资源里面传送到内存里面,就是输入,反之,把数据从内存传送到其他资源,就是输出。

读文件
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename")));
不管你从磁盘读,从网络读,或者从键盘读,读到内存,就是InputStream。

写文件
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename")));
不管你写倒磁盘,写到网络,或者写到屏幕,都是OuputStream

这样解答了你的问题了吗?
回复 使用道具 举报
stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型:
  (1)字节流
  表示以字节为单位从stream中读取或往stream中写入信息,即io包中的inputstream类和outputstream类的派生类。通常用来读取二进制数据,如图象和声音。
  (2)字符流
  以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。
  区别:
  Reader和Writer要解决的,最主要的问题就是国际化。原先的I/O类库只支持8位的字节流,因此不可能很好地处理16位的Unicode字符流。Unicode是国际化的字符集(更何况Java内置的char就是16位的Unicode字符),这样加了Reader和Writer之后,所有的I/O就都支持Unicode了。此外新类库的性能也比旧的好。
  但是,Read和Write并不是取代InputStream和OutputStream,有时,你还必须同时使用"基于byte的类"和"基于字符的类"。为此,它还提供了两个"适配器(adapter)"类。InputStreamReader负责将InputStream转化成Reader,而OutputStreamWriter则将OutputStream转化成Writer。
回复 使用道具 举报
cqhuchuan 发表于 2012-4-1 12:44
看来你并没有理解内存、磁盘、终端(屏幕/键盘)、网络之间的关系。不知道我说的能否解决你的问题。。
你程 ...

看了似乎有些理解,以后写到具体项目的时候应该就可以很好的理解了,谢谢您!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马