C# - 读取和写入文本文件

StreamReaderStreamWriter 类用于读取和写入文本文件数据。这两个类继承自抽象基类 Stream,后者支持将字节读取和写入文件流。

StreamReader 类

StreamReader 类也继承自抽象基类 TextReader,后者表示用于读取一系列字符的读取器。下表介绍了 StreamReader 类的一些常用方法 -

序号 方法 &说明
1

public override void Close()

关闭 StreamReader 对象和底层流,并释放与读取器关联的所有系统资源。

2

public override int Peek()

返回下一个可用字符,但不使用它。

3

public override int Read()

从输入流读取下一个字符,并将字符位置前进一。

示例

以下示例演示如何读取名为 Jamaica.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:/jamaica.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,后者表示一个写入器,可以写入一系列字符。

下表描述了此类最常用的方法 -

Sr.No. 方法 &说明
1

public override void Close()

关闭当前 StreamWriter 对象和底层流。

2

public override void Flush()

清除当前写入器的所有缓冲区,并将所有缓冲数据写入底层流。

3

public virtual void Write(bool value)

将布尔值的文本表示形式写入文本字符串或流。 (继承自 TextWriter。)

4

public override void Write(char value)

将字符写入流。

5

public virtual void Write(decimal value)

将十进制值的文本表示形式写入文本字符串或流。

6

public virtual void Write(double value)

将 8 字节浮点值的文本表示形式写入文本字符串或流。

7

public virtual void Write(int value)

将 4 字节有符号整数的文本表示写入文本字符串或流。

8

public override void Write(string value)

将字符串写入流。

9

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

csharp_file_io.html