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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾存双 中级黑马   /  2012-7-23 12:53  /  1898 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

ByteArrarInputStream是将数据写入到内存还是将数据从内存中读取出来?这点我有点迷糊...
读取的源以一个byte数组,那么读取的应该是byte数组中的内容,而不是读取的ByteArrayOutputStream.write()写入到内存中的数据,我想问可不可以直接读取ByteArrayOutputStream.write()写入到内存中的数据?如果不能读取,那么ByteArrarInputStream和ByteArrayOutputStream还有什么联系。

1 个回复

倒序浏览
/*
用于操作字节数组的流对象。

ByteArrayInputStream :在构造的时候,需要接收数据源,。而且数据源是一个字节数组。

ByteArrayOutputStream: 在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组。
这就是数据目的地。

因为这两个流对象都操作的数组,并没有使用系统资源。
所以,不用进行close关闭。


在流操作规律讲解时:

源设备,
        键盘 System.in,硬盘 FileStream,内存 ArrayStream。
目的设备:
        控制台 System.out,硬盘FileStream,内存 ArrayStream。


用流的读写思想来操作数据。


*/
import java.io.*;
class ByteArrayStream
{
        public static void main(String[] args)
        {
                //数据源。
                ByteArrayInputStream bis = new ByteArrayInputStream("ABCDEFD".getBytes());

                //数据目的
                ByteArrayOutputStream bos = new ByteArrayOutputStream();

                int by = 0;

                while((by=bis.read())!=-1)
                {
                        bos.write(by);
                }



                System.out.println(bos.size());
                System.out.println(bos.toString());

        //        bos.writeTo(new FileOutputStream("a.txt"));

        }
}

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马