I/O数据流提供一种向后备存储读取字节的方式,它是在.NET Framework中执行读写文件操作时的一种非常重要的介质。
我们可以将流视为一组连续的一维数据,包含开头和结尾,并且其中的游标指示了流中的当前位置。
1.流操作
流中包含的数据可能来自内存、文件或TCP/IP套接字,基本操作:
(1)读取:将数据从流传输到数据结构(如字符串货字节数组)中
(2)写入:将数据从数据源传输到流中
(3)查找:查询和修改在流中的位置
2.流类型
流由Stream类表示,该类构成了所有其他流的抽象类。不恩给你直接创建Stream类实例,必须使用它来实现某个I/O流类。
主要包括:
FileStream类,BufferedStream类,CryptoStream类,MemoryStream类和NetworkStream类(这个在之前提到的TcpClient的时候有过)
3.FileStream类
(1)常用属性
Length 获取用字节表示的流长度
Name 获取传递给构造函数的FileStream的名称
Positon 获取或设置此流的当前位置
ReadTimeout 获取或设置一个值,该值确定流在超时前尝试读取多长时间
WriteTimeout 获取或设置一个值,该值确定流在超时前尝试写入多长时间
(2)常用方法
Close 关闭当前流并释放与之关联的所有资源
Read 从流中读取字节块并将该数据写入给定的缓冲区
ReadByte 从文件中读取一个字节,并将读取位置提升一个字节
Seek 将该流的当前位置设置为给定值
SetLength 将该流的长度设置为给定值
Write 使用从缓冲区读取的数据将字节块写入该流
WriteByte 将一个字节写入文件流的当前位置
(3)使用FileStream类操作文件
FileStream类的构造函数的重载方式有很多,包含的重要参数有FileMode枚举
FileMode枚举:
Append 打开现有文件并查找到文件尾或创建新文件,只能与FileAccess.Write
Create 指定操作系统应创建新文件,文件已存在,则改写
CreateNew 指定操作系统应创建新文件,文件以存在,引发IOExecption,需要 FileIOPermissionAccess.Write
Open 指定操作系统应打开文件,如果文件不存在,引发找不到错误
OpenOrCreate 指定操作系统应打开文件(如果文件存在),否则应创建新文件
Truncate 指定操作系统应打开现有文件,文件一旦打开,将被截断为零字节大 小。视图从使用Truncate打开的文件中进行读取将导致异常
实例代码:
FileStream filestream = new FileStream("test.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite)
注意:
文件要放在程序运行目录下,否则就需要给构造函数传递绝对地址
C#-I/O输入输出之FileStream类