黑马程序员技术交流社区

标题: 关于流的理解 [打印本页]

作者: 影响力147753321    时间: 2013-5-2 10:01
标题: 关于流的理解
java流中的读和写怎么理解?什么是读到一个数组中。又怎么写到一个数组中。到底在内存中是个什么情况?大家是怎么理解的。求教?
作者: 吴传淦    时间: 2013-5-2 10:10
我的理解是读到数组中就是数组创建了一个堆内存区域,将流中的数据保存到这片堆内存区域中等待进一步操作使用。
写到数组中也一样,把数据保存到堆内存区域中。读写数组一般用于缓存数据
作者: 影响力147753321    时间: 2013-5-2 10:30
吴传淦 发表于 2013-5-2 10:10
我的理解是读到数组中就是数组创建了一个堆内存区域,将流中的数据保存到这片堆内存区域中等待进一步操作使 ...

那么读写时建立的数组怎么是一个呢?应该是读对应一个。写对应一个呀!
作者: 吴传淦    时间: 2013-5-2 10:38
影响力147753321 发表于 2013-5-2 10:30
那么读写时建立的数组怎么是一个呢?应该是读对应一个。写对应一个呀! ...

写的时候,假如将数据直接写到文件的话。读写就共同操作一个数组的这片内存区域了
作者: 郑雪    时间: 2013-5-2 10:44
读,就是將数据输入到内存中,字符流中的Reader就类似于字节流中的InputStream;
写,就是將数据由内存中输出,字符流中的Writer就类似于字节流中的OutputStream。

个人理解为:读和写其实就是输入输出的一种形象的说法,内存就是于执行读写的人。
作者: 黄玉昆    时间: 2013-5-3 22:36
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: 董波    时间: 2013-5-4 11:07
影响力147753321 发表于 2013-5-2 10:30
那么读写时建立的数组怎么是一个呢?应该是读对应一个。写对应一个呀! ...

是这样的,我们在进行读写操作时,输入流、输出流之间本来是没有直接关系的,而你建立的数组就是连接输入、输出流的桥梁。
具体操作时,先把输入流的数据“读入”到数组中(也就是内存中),然后再用输出流将该数组的数据“写出”到目的地。
其实,你建立的数组就是一个数据的中转站,之所以需要这个中转站,是因为输入、输出流没办法直接沟通。
关于读和写概念的理解,看一下楼上“郑雪”同学的解释吧,说的挺清楚的。
作者: jingzhouheima    时间: 2013-5-4 20:38
// 楼主可以看看代码来理解一下

static void Main(string[] args)
        {
            Console.WriteLine("请输入要读取文件的文件名,包括路径");
            string path = Console.ReadLine();//读取路径
            if (!File.Exists(path))//判断路径是否存在
            {
                Console.WriteLine("文件不存在");
                return;
            }
            FileStream readStream = new FileStream(path,FileMode.Open);//根据读入的模式。以Open方式打开来创建一个文件流对象
            BufferedStream readBuffered = new BufferedStream(readStream);//根据穿件的文件流来创建一个缓冲流对象
            byte[] bt = new byte[readBuffered.Length];//以字节流形式进行读入
            readBuffered.Read(bt, 0, (int)readBuffered.Length);//调用缓冲流对象的Read方法将字节流读入缓冲流对象

            Console.WriteLine(Encoding.Default.GetString(bt));//在控制台进行编码输出
            readBuffered.Close();//关闭缓冲流
            Console.ReadLine();
        }
作者: 影响力147753321    时间: 2013-5-5 14:24
郑雪 发表于 2013-5-2 10:44
读,就是將数据输入到内存中,字符流中的Reader就类似于字节流中的InputStream;
写,就是將数据由内存中输 ...

内存就是执行读写的人。很精辟。也就是输入和输出相对于内存。流进入内存就是读。流出了内存就是写。可以这样说吧!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2