文件I/O流介绍
C#中I/O数据流技术提供了一种向计算机写入字节和从计算机读取字节的方式。使用I/O 能很方便的帮助我们操作计算机文件。数据输入输出示意图如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ec860b9db8e492eae47cfacda1a52d4.png)
1.FileStream类的常用属性
属性 | 说明 |
---|
CanRead | 获取一个值,该值指示当前流是否支持读取 |
CanSeek | 获取一个值,该值指示当前流是否支持查找 |
CanTimeout | 获取一个值,该值指示当前流是否可以超时 |
CanWrite | 获取一个值,该值指示当前流是否支持写入 |
IsAsync | 获取一个值,该值指示FileStream是异步打开还是同步打开 |
Length | 获取用字节表示的流长度 |
Name | 获取传递给构造参数的FileSteam的名称 |
Position | 获取或设置此流的当前位置 |
ReadTimeout | 获取或设置一个值,该值确定流在超时前尝试读取多长时间 |
WriteTimeout | 获取或设置一个值,该值确定流在超时前尝试写入多长时间 |
2.FileStream类的常用方法
方法 | 说明 |
---|
BeginRead | 开启异步读取操作 |
BeginWrite | 开始异步写入操作 |
Close | 关闭当前流并释放与之关联的所有资源 |
EndRead | 等待挂起的异步读取完成 |
EndWrite | 结束异步写入,在I/O操作完成之前一直阻止 |
Lock | 允许读取访问的同时防止其他进程更改FileStream |
Read | 从流中读取字符块并将该数据写入指定缓冲区 |
ReadByte | 从文件中读取一字节,并将读取位置提升一字节 |
Seek | 将该流的当前位置设置为指定值 |
SetLength | 将该流的长度设置为指定值 |
UnLock | 允许其他进程访问以前锁定的某个文件的全部内容或部分内容 |
Write | 使用从缓冲区读取的数据将字节块写入该流 |
WriteByte | 将一字节写入文件流的当前位置 |
3.使用FileStream类操作文件
使用FileStream类操作文件,要先实例化一个FileStream对象。如操作unity.txt文件:
FileStream fs=new FileStream("Unity.txt",FileMode.Open,FileAccess.ReadWrite);
FileMode枚举规定了如何打开或创建文件
枚举成员 | 说明 |
---|
Appeng | 打开现有文件并查找到文件尾,或者创建新文件。FileMode.Append只能与FileAccess.Write结合使用。任何尝试都将失败并引发ArgumentException(异常) |
Create | 指定操作系统应创建新文件。如果文件已存在,它将被改写。这要求FileIOPermissionAccess.Write。System.IO.FileMode.Create等效于这样的请求;如果文件不存在,则使用CreateNew;否则使用Truncate |
CreateNew | 指定操作系统应创建新文件。此操作需要FileIOPermissionAccess.Write。如果文件已存在,则将引发IOException(异常) |
Open | 指定操作系统应打开现有文件,打开文件的能力取决于FileAccess所指定的值,如果该文件不存在,则引发System.IO.FileNotFoundExcetion(文件找不到的异常) |
OpenOrCreate | 指定操作系统应打开文件,如果要打开的文件不存在,应创建新文件。如果用FileAccess.Read打开文件,则需要FileIOPermissionAccess.Read。如果文件访问方式为FileAccess.Write或FileAccess.ReadWrite,则需要FileIOPermissionAccess.Write;如果文件访问方式为FileAccess.Append,则需要FileIOpermissionAccess.Append |
Truncate | 指定操作系统应打开现有文件。文件一旦打开,将被截断为零字节。此操作需要FileIOPerimissionAccess .Write。试图从使用Truncate打开的文件中进行读取操作将导致异常 |
使用I/O数据流操作文本文件
主要使用的是StreamWriter类和StreamReader类
StreamWriter类是专门用来处理文本文件的类,StreamReader类是专门用来读取文本文件的类, 下面是一些它们的常用属性和方法:
1、StreamWriter类常用属性及说明
属性 | 说明 |
---|
Encoding | 获取将输出写入到其中的Encoding |
Formatprovider | 获取控制格式设置的对象 |
NewLine | 获取或设置由当前TextWriter使用的行结束符字符串 |
2、StreamWriter类常用方法及说明
方法 | 说明 |
---|
Close | 关闭当前的StringWriter和基础流 |
Write | 写入到到StringWriter的此实例中 |
WriteLine | 写入到重载参数指定的某些数据,后跟行结束符 |
3、StreamReader类常用方法及说明
方法 | 说明 |
---|
Close | 关闭StringReader |
Read | 写入到到StringWriter的此实例中 |
ReadBlock | 从当前流中读取最大count的字符并从index开始将该数据写入Buffer |
ReadLine | 从基础字符串中读取一行 |
ReadToEnd | 将整个流或从流的当前位置到流的结尾作为字符串读取 |