1.流的概述
流是字节序列的抽象概念,如文件、输入输出设备、内部进行通信的管道、TCP/IP套接字等。流常用的三个基本操作如下:读取流、写入流、查找。
Read和Write方法支持读写不同格式的数据。对于支持查找功能的流,可以使用Seek和SetLength方法以及Length和Position属性查询和修改流的当前位置和长度。
有些流实现执行数据的本地缓冲以提高性能。对于这样的流,Flush方法可用于清除所有内部缓冲区并确保将所有数据写入数据源或储存器。
在实现Stream的派生类时,必须提供Read和Write方法的实现。异步方法BeginRead、EndRead、BeginWrite和EndWrite通过同步方法Read和Write实现。
2.文件概述
文件在操作时表现为流。
二进制文件和文本文件:二进制文件中,文件内容是数据的内部表示,是从内在中直接复制过来的。文本文件中,字节单元的内容为字条的代码。对于字条信息无差别,对于数值信息,数据的内部表示和字符代码是截然不同的。
常用的文件流:
对目录的操作:Directory,DirectoryInfo,Path
对文件的典型操作:File,FileInfo
读写文件:FileStream
读写文本文件:StreamReader, StreamWriter
对字符串的读写:StringReader,StringWriter
注:
有两种类型的文件IO同步:同步文件IO和异步文件IO。异步文件IO也就是重叠IO。
在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。