实现在文本文件中的读和写
Stream类用于从文本文件读取数据和向文本文件写入数据。它是一个抽象类,支持向流读写字节。如果文件的数据仅是文本,那么您可以使用StreamReader类和StreamWriter类来完成相应的读和写任务。
StreamReader类
StreamReader类继承自从抽象类TextReader。TextReader类表示可以读取一系列字符的读程序。
以下代码段实现了StreamReader类:
FileStream fs = new FileStream("Myfile.txt",FileMode.Open,FileAccess.Read);StreamReader sr = new StreamReader(fs);sr.BaseStream.Seek(0,SeekOrigin.Begin);string str = sr.ReadLine();
在上述代码段中,Seek()方法允许在文件内将读/写位置移动到任何位置。该方法由两个参数,一个字节位置和一个引用点。字节位置是相对于引用点的。这些引用点由SeekOrigin类的属性表示。
各种引用点有:
- Begin:提供搜寻引用位置作为流的开始。
- Current:提供搜寻引用位置作为流中的当前位置和引用点。
- End:提供搜寻引用位置作为流的结束。
下表描述了StreamReader类的一些常用方法。
方法 | 描述 |
---|---|
Close() | 关闭StreamReader类的对象和流,并且释放与读程序相关的所有系统资源 |
Peek() | 返回下一个可用的字符当不使用它 |
Read() | 从流中读取下一个字符或下一个字符集 |
ReadLine() | 从当前流读取一行字符,并且将数据作为字符串返回 |
Seek() | 允许在文件内将读/写位置移动到任何位置 |
以下代码实现StreamReader类来从文件读取数据:
using System;using System.IO;class FileRead{public void ReadData(){FileStream fs = new FileStream("Myfile.txt",FileMode.Open,FileAccess.Read);StreamReader sr = new StreamReader(fs);//Position the file pointer at the begginning of the filesr.BaseStream.Seek(0,SeekOrign.Begin);//Read till the end of the file is encounteredstring str = sr.ReadLine();while ( str != null ){Console.WriteLine("{0}",str);str = sr.ReadLine();}//close the writer and filesr.Close();fs.Close();}public static