黑马程序员技术交流社区
标题: 大家谈谈对IO流中流的概念的理解吧 [打印本页]
作者: toShareBeauty 时间: 2013-6-14 23:43
标题: 大家谈谈对IO流中流的概念的理解吧
本帖最后由 孙百鑫 于 2013-6-15 09:29 编辑
面向对象,但是我觉得面向对象之所以最接近人类自然的思考方式,是因为面向对象真正的让计算机程序有了 “概念” 这种思想,概念才是人类思考的自然方式。面向对象不如叫面向概念更加合适。这也说明了面向对象里面 类名 对象名 函数名 变量名 这些标识符的重要作用。只有真正把这些命名取好,并且解释好,才能让使用的人真正的用得好。同样在学习面向对象的框架或者库的时候,把框架或者库里面的概念搞明白,才能真正用好这些框架或者库。也就是要把框架或者库的内容抽象为概念,这样才好理解和记忆,才能方便使用。概念才能体现逻辑。
所以我想在这里和大家讨论一下 IO 流中流的概念,当然是用 IO 流的相关类的时候,这个不是重点,但是流这种东西在计算机中很多地方都有,比如NetStream。计算机中经常出现的一个词就是 IO 流,IO 流为什么叫 IO 流呢,先说 IO,IO 是 input output 的简称,从计算机体系结构上来说,计算机的主板的许多芯片中有个特别的东西叫 IO 芯片(intel 的架构),或者计算机的 cpu 中集成有 IO 引脚(arm 架构、单片机之类)。这个东西主要作用就是计算机芯片和其他设备交换数据用的,特别指计算机内存和其他外围设备交换数据时使用的,所以计算机中 IO 主要是指内存和其他外围设备交换数据。再说流,stream 是 IO 设备读写的一种方法,对比内存中数据通常的读写方法,这种数据读写方法叫做流式读写,回想我们用c语言读写内存中的数据,我们都是一个单位一个单位读写的,这个单位是数据线的宽度决定的,比如 8 bits、32 bit、 64 bits。而流式方法,好比水流,我们每次读写的数据的大小是可以指定的,然后它会自动分多次持续完成数据交换,这里主要跟硬件的缓冲区和 DMA 有关系,所以 IO 都有流的概念。又因为流式读写是自动的多次读一个资源的数据到内存,多次写内存的数据到资源,所以流式读写的特征跟水流一样是持续不断的。流解决了两个速度不同的存储设备之间传输数据的问题,速度慢的外设先把数据放到缓冲区,然后集中一小段时间占用总线把这些数据传给内存,其他时间内存和其他设备交换数据,或者内存先把数据传送给外设缓冲区,缓冲区再慢慢把数据写入设备对应位置。流式读写可以分为 节点流和处理流,字节流和字符流,输入流和输出流。
下面是百度知道的内容:
IO中的流就相当与我们日常生活中的管道,我们通过管道来把水引到用户,通过管道把石油输送到大罐.同样,我们利用流来从硬盘的文件中读数据到你的程序中,利用流来写数据到硬盘的文件,文件流 缓冲流 数据流 转换流 Print流 Object流正是为了实现这些功能的不同的类,他们具体包含了实现这些功能的方法,但如果每次都要从硬盘读取一个字节数据或写1个字节数据到硬盘,那就对硬盘损害太大了,比如电驴就损害硬盘.解决办法:在内存中建立一个缓冲区(buffer),读一次硬盘就把缓冲区装满,然后你就可以从缓冲区读取数据,写数据的时候,先在内存中把数据写到缓冲区,写满,然后把数据一次性地从缓冲区写到硬盘.这样对硬盘的访问次数大大减少了.缓存要交换的数据:就是读数据的时候把数据一次性读到缓冲区和写数据的时候先把数据写到缓冲区的意思,buffer是在内存中是通过字节数组实现的。
作者: toShareBeauty 时间: 2013-6-14 23:52
追问一下,怎么修改已经发布的帖子?
作者: 孙百鑫 时间: 2013-6-15 06:49
楼主您好如果修改帖子的话.在编辑里面.然后主题分类改成以解决谢谢您的配合
作者: To 时间: 2013-6-15 15:53
给详细解答一下!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |