对文件的读写操作应该是最重要的文件操作,System.IO命名空间提供了诸多文件读写操作类,对文件内容进行操作常见有3种方式:文本模式、二进制模式以及异步模式。
1、文本模式
StreamReader和StreamWriter类提供了按文本模式读写数据的方法。
1.1 StreamReader类的成员方法
方法 | 说明 |
Close | 关闭StreamReader并释放与阅读器关联的所有系统资源。 |
CreateObjRef | (从MarshalByRefObject继承)创建一个对象,该对象包含生成用于与过程对象进行通讯的代理所需的全部相关信息。 |
DiscardBufferedData | 允许StreamReader丢弃其当前数据。 |
Equals | 确定两个Object实例是否相等。 |
GetHashCode | 用作特定类型的哈希函数,适合在哈希算法和数据结构中使用。 |
GetLifetimeSrvice | (从MarshalByRefObject继承)检索控制此实例的生存期策略的当前生存期服务对象 |
Peek | 返回下一个可用的字符,但不使用它。 |
Read | 读取输入流中的下一个字符或下一组字符。 |
ReadBlock | (从TextReader继承)从当前流中读取最大数量的字符并从索引开始将该数据写入缓冲区 |
ReadLine | 从当前流中读取一行字符并将数据作为字符串返回 |
ReadToEnd | 从流的当前位置到末尾读取流 |
1.1 StreamWriter类的成员方法
方法 | 说明 |
Close | 关闭当前的StreamWriter和基础流。 |
CreateObjRef | (从MarshalByRefObject继承)创建一个对象,该对象包含生成用于与过程对象进行通讯的代理所需的全部相关信息。 |
Equals | 确定两个Object实例是否相等。 |
Flush | 清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。 |
GetHashCode | 用作特定类型的哈希函数,适合在哈希算法和数据结构中使用。 |
GetLifetimeSrvice | (从MarshalByRefObject继承)检索控制此实例的生存期策略的当前生存期服务对象 |
Write | 写入流 |
WriteLine | (从TextWrite继承)写入重载参数指定的某此数据,后跟行结束符。 |
2、二进制模式
System.IO还提供了BinaryReader和BinaryWriter类,用于按二进制模式读写文件。它们提供的一些读写方法是对称的。
2.1 BinaryReader类的成员方法
方法 | 说明 |
Close | 关闭当前阅读器及基础流。 |
PeekChar | 返回下一个可用的字符,并且不提升字节或字符的位置。 |
Read | 从基础流中读取字符,并提升流的当前位置 |
ReadBoolean | 从当前流中读取Boolean,并使该流的当前位置提升1个字节。 |
ReadByte | 从当前流中读取下一个字节,并使流的当前位置提供1个字节。 |
ReadBytes | 从当前流中将Count个字符读入字节数组,并使当前位置提升Count个字节。 |
ReadChar | 从当前流中读取下一个字符,并根据所使用的Encoding和从流中读取的特定字符,提升流的当前位置。 |
ReadChars | 从当前流中读取Count字符,以字符数组的形式返回数据,并根据所使用的Encoding和从流中读取的特定字符,提升当前位置。 |
ReadInt16 | 从当前流中读取2字节有符号整数,并使流的当前位置提升2个字节。 |
ReadUint16 | 从当前流中读取2字节无符号整数,并使流的当前位置提升2个字节。 |
…… |
|
2.2 BinaryWriter类的成员方法
方法 | 说明 |
Close | 关闭当前的BinaryWriter和基础流。 |
Flush | 清理当前编写器的所有缓冲区,使所有缓冲数据写入基础设备 |
Seek | 设置当前流中的位置 |
Write | 将值写入当前流。 |
3、异步模式
先来说说同步和异步操作之间的主要区别,同步I/O意味着在I/O操作完成之前,方法被阻塞,I/O操作完成后,方法返回其数据。使用异步I/O,用户可以调用BeginRead或BeginWrite。主线程可以继续进行其他工作,稍后用户将能够处理数据。另外,多个I/O请求可以被同时挂起。
3.1 Stream类的主要成员方法
方法 | 说明 |
BeginRead | 开始异步读操作 |
BeginWrite | 开始异步写操作 |
Close | 关闭当前流并释放与之关联的所有资源(如套接字和文件句柄) |
EndRead | 等待挂起的异步读取完成。 |
EndWrite | 结束异步写操作。 |
Flush | 在派生类中直接重写时,将清除该流的所有缓冲区并使所有缓冲数据被写入到基础设置。 |
Read | 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节娄 |
ReadByte | 从流中读取1个字节,并将流内的位置向前推进1个字节,或者如果已到达流末尾,则返回-1 |
Seek | 当在派生类中重写时,设置当前流中的位置 |
SetLength | 当在派生类中重写时,设置当前流的长度 |
Write | 在派生类中重写时,向当前流中写入字节序列并将此流中的当前位置提升写入的字节数 |
WriteByte | 将一个字节写入流内的当前位置并将流内的位置向前推进一个字节。 |
<五> path类
Path类用来处理路径字符串,它的方法也全部是静态的。
方法 | 说明 |
ChangExtension | 更改路径字符串的扩展名 |
Combine | 合并两个路径字符串 |
GetDirectoryName | 返回指定路径字符串的目录信息 |
Gextension | 返回指定路径字符串的扩展名 |
GetFileName | 返回指定路径字符串的文件名 |
GetFileNameWithoutExetension | 返回不带有扩展名的指定路径字符串我文件名 |
GetFullPath | 返回指定路径字符串的绝对路径 |
GetTempPath | 返回当前系统的临时文件夹的路径 |
HasExtension | 确定路径是否包括文件扩展名。 |