C# 文本文件读写
StreamReader 和 StreamWriter 类用于文本文件的数据读写。
这些类从抽象基类 Stream 继承,Stream 支持文件流的字节读写。
StreamReader 类
StreamReader 类继承自抽象基类 TextReader,表示阅读器读取一系列字符。
下表列出了 StreamReader 类中一些常用的 方法 :
方法 | 描述 |
---|---|
public override void Close() | 关闭 StreamReader 对象和基础流,并释放任何与读者相关的系统资源。 |
public override int Peek() | 返回下一个可用的字符,但不使用它。 |
public override int Read() | 从输入流中读取下一个字符,并把字符位置往前移一个字符。 |
如需查看完整的方法列表,请访问微软的 C# 文档。
范例
下面的范例演示了读取名为 hello.txt 的文件。文件如下:
Down the way where the nights are gay And the sun shines daily on the mountain top I took a trip on a sailing ship And when I reached Jamaica I made a stop
using System; using System.IO; namespace FileApplication { class Program { static void Main(string[] args) { try { // 创建一个 StreamReader 的范例来读取文件 // using 语句也能关闭 StreamReader using (StreamReader sr = new StreamReader("c:/hello.txt")) { string line; // 从文件读取并显示行,直到文件的末尾 while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // 向用户显示出错消息 Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } Console.ReadKey(); } } }
当您编译和执行上面的程序时,它会显示文件的内容。
StreamWriter 类
StreamWriter 类继承自抽象类 TextWriter,表示编写器写入一系列字符。 下表列出了 StreamWriter 类中一些常用的 方法 :
方法 | 描述 |
---|---|
public override void Close() | 关闭当前的 StreamWriter 对象和基础流。 |
public override void Flush() | 清理当前编写器的所有缓冲区,使得所有缓冲数据写入基础流。 |
public virtual void Write(bool value) | 把一个布尔值的文本表示形式写入到文本字符串或流。(继承自 TextWriter。) |
public override void Write(char value) | 把一个字符写入到流。 |
public virtual void Write(decimal value) | 把一个十进制值的文本表示形式写入到文本字符串或流。 |
public virtual void Write(double value) | 把一个 8 字节浮点值的文本表示形式写入到文本字符串或流。 |
public virtual void Write(int value) | 把一个 4 字节有符号整数的文本表示形式写入到文本字符串或流。 |
public override void Write(string value) | 把一个字符串写入到流。 |
public virtual void WriteLine() | 把行结束符写入到文本字符串或流。 |
如需查看完整的方法列表,请访问微软的 C# 文档。
范例
下面的范例演示了使用 StreamWriter 类向文件写入文本数据:
using System; using System.IO; namespace FileApplication { class Program { static void Main(string[] args) { string[] names = new string[] {"Zara Ali", "Nuha Ali"}; using (StreamWriter sw = new StreamWriter("names.txt")) { foreach (string s in names) { sw.WriteLine(s); } } // 从文件中读取并显示每行 string line = ""; using (StreamReader sr = new StreamReader("names.txt")) { while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } Console.ReadKey(); } } }
当上面的代码被编译和执行时,它会产生下列结果:
Zara Ali Nuha Ali