实现在文本文件中的读和写
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 file
sr.BaseStream.Seek(0,SeekOrign.Begin);
//Read till the end of the file is encountered
string str = sr.ReadLine();
while ( str != null )
{
Console.WriteLine("{0}",str);
str = sr.ReadLine();
}
//close the writer and file
sr.Close();
fs.Close();
}
public static