一:基本概念
流是字节序列的抽象概念,I/O流又称作出入/输出流,他是流中一种方式
读取流:读取流中的内容
写入流:指定内容写入到流中
查找流:查找或修改流当前的位置
二:常用类的介绍
1:Stream抽象类
Stream 是所有流的抽象基类,常用如下
FileStream类(文件流,用于对文件进行读取和写入操作)
MemoryStream类(内存流,用于作为后备存储对内存进行读取和写入操作)
BufferedStream类(缓存流,用于改进读取和写入操作的性能)
2:FileStream类
2.1 概述:它主要对文件系统上的文件进行读取、写入、打开、和关闭操作
2.2 常用属性:
CanRead | 获取一个值,该值指示当前流是否支持读取。 |
CanSeek | 获取一个值,该值指示当前流是否支持查找。 |
CanTimeout | 获取一个值,该值确定当前流是否可以超时。 (继承自 Stream) |
CanWrite | 获取一个值,该值指示当前流是否支持写入。 |
IsAsync | 获取一个值,该值指示 |
Length | 获取流的长度(以字节为单位)。 |
Name | 获取在 |
Position | 获取或设置此流的当前位置。 |
ReadTimeout | 获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取的时间。 (继承自 Stream) |
SafeFileHandle | 获取一个 SafeFileHandle 对象,该对象表示当前 FileStream 对象封装的文件的操作系统文件句柄。 |
WriteTimeout | 获取或设置一个值(以毫秒为单位),该值确定流在超时之前尝试写入的时间。 |
2.3 常用方法:
Close() | 关闭当前流并释放与当前流关联的任何资源(如套接字和文件句柄)。 |
Read(Byte[], Int32, Int32) | 从流中读取字节块并写入给定缓冲区中的数据 |
Write(Byte[], Int32, Int32) | 将字节块写入文件流 |
2.4:构造方法
public FileStream(string path, FileMode mode, FileAccess access);
path (当前 FileStream 对象将封装的文件的相对路径或绝对路径)
FileMode mode 是一个枚举,是打开文件的模式
public enum FileMode
{
CreateNew //用Path指定路径的文件名称新建一个文件,如果存在这个文件名称的文件存在,发生异常,提示文件已存在
Create //用Path指定路径的文件名称新建一个文件,如果存在这个文件名称的文件存在,在已存在的文件上进行重写内容
Open //打开Path指定路径的文件名称的一个文件,如过不存在此文件,发生异常
OpenOrCreate //Path指定路径的文件名称的文件,如果存在就进行打开,如果不存在则进行创建并打开
Append //Path指定路径的文件名称的文件,在其内容后进行追加,如果不存在此文件,发生异常
}
2.5 FileAccess是一个枚举,赋予文件的权限
public enum FileAccess
{
Read //对文件的读访问
Write //文件的写访问
ReadWrite //对文件的读写访问权限
}
3:MemoryStream类
3.1 概述:它用来创建其支持存储区内为内存流,内存流是一个非缓冲的流,可以在内存中直接访问它封装的是数据,而且内存流没有后备存储,可以做临时缓冲区
3.2 常用属性:
CanRead | 获取一个值,该值指示当前流是否支持读取。 |
CanSeek | 获取一个值,该值指示当前流是否支持查找。 |
CanTimeout | 获取一个值,该值确定当前流是否可以超时。 (继承自 Stream) |
CanWrite | 获取一个值,该值指示当前流是否支持写入。 |
Capacity | 获取或设置为此流分配的字节数。 |
Length | 获取流的长度(以字节为单位)。 |
Position | 获取或设置流中的当前位置。 |
ReadTimeout | 获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取的时间。 (继承自 Stream) |
WriteTimeout | 获取或设置一个值(以毫秒为单位),该值确定流在超时之前尝试写入的时间。 (继承自 Stream) |
3.3 常用方法:
4:BufferedStream类
41 概述:添加缓冲层以在另一个流上读取和写入操作,缓冲区是内存中用于缓存数据的字节块,从而减少对操作系统的调用数。 缓冲区可提高读取和写入性能。 缓冲区可用于读取或写入,但绝不同时使用两者。 BufferedStream
的 Read 和 Write 方法会自动维护缓冲区。
4.2常用属性:
BufferSize | 获取此缓冲流的缓冲区大小(以字节为单位)。 |
CanRead | 获取一个值,该值指示当前流是否支持读取。 |
CanSeek | 获取一个值,该值指示当前流是否支持查找。 |
CanTimeout | 获取一个值,该值确定当前流是否可以超时。 (继承自 Stream) |
CanWrite | 获取一个值,该值指示当前流是否支持写入。 |
Length | 获取流长度(以字节为单位)。 |
Position | 获取当前流中的位置。 |
ReadTimeout | 获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取的时间。 (继承自 Stream) |
UnderlyingStream | 获取此缓冲流的基础 Stream 实例。 |
WriteTimeout | 获取或设置一个值(以毫秒为单位),该值确定流在超时之前尝试写入的时间。 |
4.3 常用方法: