关于流(io)
2016-05-02 22:56
260 查看
流是一种对集合上的一系列转换延迟执行的机制。
这样简单理解记忆流:流就是一个帮定了一个“外设”的容器,具有缓冲功能。之所以产生流,是为了方便处理从一个容器往另一个容器里放东西的时候,不用考虑另一个容器是否来的及接收和是否能够容得下,这些都由流自动完成。所以简单理解流时,也可以把流看做事绑定了一个“外设容器”的“具有缓冲效果的外设”。
下面举例讲解为什么可以这样简单理解:
我们在new一个流的时候一般都需要提供一个参数,这个参数一般是个文件名或者自己数组等。如:
IOStream stream=new IOStream("f:\aa.txt") ; #只是随便举个例子,不涉及编程语言
这样一个stream流就建立好了,流建立好后就立刻绑定到一个“外设”,当然也可以绑定到一个内存对象,如字节数组,以后往字节数组里写东西。
以后用流的话可以如下:
string ss="hello,world"; ;
stream<<ss; #这里把stream当做了输出流,往文件里写东西
或者
string ss;
stream>>ss; #这里把stream当做了输入流,从文件中读取内容,存入字符串变量ss中。
当然有的变成语言不提供输入和输出运算符(>> , <<),而是提供了入reader和writer函数,而python和C就提供了输入输出运算符。
从上面代码(可以看成是伪代码,但几乎所有编程语言都大致这样使用)可以看成,new一个流对象的时候就一定绑定了一个容器(一般是外设),可以对流进行写操作和读操作。所以可以认为一个流对象就是一个“绑定了外设的容器”。
这样简单理解记忆流:流就是一个帮定了一个“外设”的容器,具有缓冲功能。之所以产生流,是为了方便处理从一个容器往另一个容器里放东西的时候,不用考虑另一个容器是否来的及接收和是否能够容得下,这些都由流自动完成。所以简单理解流时,也可以把流看做事绑定了一个“外设容器”的“具有缓冲效果的外设”。
下面举例讲解为什么可以这样简单理解:
我们在new一个流的时候一般都需要提供一个参数,这个参数一般是个文件名或者自己数组等。如:
IOStream stream=new IOStream("f:\aa.txt") ; #只是随便举个例子,不涉及编程语言
这样一个stream流就建立好了,流建立好后就立刻绑定到一个“外设”,当然也可以绑定到一个内存对象,如字节数组,以后往字节数组里写东西。
以后用流的话可以如下:
string ss="hello,world"; ;
stream<<ss; #这里把stream当做了输出流,往文件里写东西
或者
string ss;
stream>>ss; #这里把stream当做了输入流,从文件中读取内容,存入字符串变量ss中。
当然有的变成语言不提供输入和输出运算符(>> , <<),而是提供了入reader和writer函数,而python和C就提供了输入输出运算符。
从上面代码(可以看成是伪代码,但几乎所有编程语言都大致这样使用)可以看成,new一个流对象的时候就一定绑定了一个容器(一般是外设),可以对流进行写操作和读操作。所以可以认为一个流对象就是一个“绑定了外设的容器”。
相关文章推荐
- ubuntu14.04安装cuda7.5+cudnn+caffe
- 实验7 BindService模拟通信
- php面试题2016-5-1
- fzu 2231 平行四边形数
- 强大的U盘启动盘制作工具Rufus
- JAVA语言之基数排序
- OpenAuth.net
- MATLAB与C/C++混合编程之MATLAB调用C程序
- String abc=null;String abc="";String abc;三种写法有什么区别?
- [算法导论] 快速排序
- JDBC笔记-Transaction
- 轴承故障诊断
- 友元
- shell中各种括号的作用()、(())、[]、[[]]、{}
- 【转】获取Android控件的宽和高
- 关于Android中如何过滤HTML标签
- HDU 1297 Children’s Queue
- 10个惊艳的Swift单行代码
- 【GOF23设计模式】_工厂模式JAVA229-231
- 多种多样APP主界面Tab实现