C# 流教程:StreamReader 和 StreamWriter [示例]
什么是 C# 流?
在 C# 文件操作中,通常使用流来读写文件。流是在应用程序和文件之间创建的附加层。流用于确保文件顺畅的读写操作。
在读取大文件时,通常使用流。通过使用流,可以将大文件中的数据分解成小块并发送到流。然后,应用程序可以从流中读取这些数据块。
将其分解成小块的原因是,一次性读取大文件会对性能产生影响。如果您想一次性读取一个 100 MB 文件的数据,您的应用程序可能会挂起并且变得不稳定。在这种情况下,最佳方法是使用流将文件分解成可管理的小块。
因此,当对文件执行写入操作时,要写入的数据首先会写入流。然后,数据从流写入文件。读取操作也是如此。在读取操作中,数据首先从文件传输到流。然后,应用程序通过流从流中读取数据。让我们来看一个如何使用流进行读写的示例。
Stream Reader(流读取器)
流读取器用于通过流从文件中读取数据。文件中的数据首先被读取到流中。之后,应用程序从流中读取数据。
在我们的示例中,我们假设 D 驱动器中有一个名为 Example.txt 的文件。该文件将是一个简单的文本文件,包含如下 2 行:
- Guru99 – .Net
- Guru99 - C#
在我们的示例中,我们将创建一个简单的控制台应用程序并处理文件流。
让我们来看一个如何使用流从文件中读取数据的示例。在 program.cs 文件中输入以下代码。
using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; using (StreamReader sr = File.OpenText(path)) { String s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } Console.ReadKey(); } } }
代码解释:
- 首先,我们声明一个流读取器对象。在 C# 中,流读取器对象用于定义从文件到应用程序的流。当从文件读取数据时,数据将被推送到流中。File.OpenText 用于以只读模式打开文件“Example.txt”。然后,文件的句柄被发送到流读取器对象。
- 接下来,我们定义一个临时变量 ‘s’,它将用于读取文件中的所有数据。
- 然后,我们使用流读取器方法 ReadLine 从流缓冲区读取每一行。当我们执行此操作时,每一行将首先从文件传输到缓冲区。然后,字符串行将从缓冲区传输到变量 ‘s’。接着,我们将字符串 ‘s’ 的内容写入控制台。
当设置好上述代码并在 Visual Studio 中运行项目时,您将看到如下输出。
输出:-
从输出中,您可以看到流读取器读取了文件中的两行。最后,从流中读取的字符串行被发送到控制台。
Stream Writer(流写入器)
流写入器用于通过流将数据写入文件。应用程序中的数据首先写入流。之后,流将数据写入文件。让我们来看一个如何使用流将数据从文件写入的示例。在 program.cs 文件中输入以下代码。
using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; using (StreamWriter sr = File.AppendText(path)) { sr.WriteLine("Guru99 - ASP.Net"); sr.Close(); Console.WriteLine(File.ReadAllText(path)); } Console.ReadKey(); } } }
代码解释:
- 首先,我们声明一个流写入器对象。在 C# 中,流写入器对象用于定义一个流。然后,该流用于将数据从应用程序写入文件。当需要写入数据时,数据将被从应用程序推送到流中。File.AppendText 命令用于以追加模式打开文件“Example.txt”。然后,文件的句柄被发送到流写入器对象。
- 我们使用流写入方法 Writeline 将行“Guru99 – ASP.Net”写入流。然后,该行将从流写入文件。
- 然后,我们在写入文件后关闭流写入器。在不再需要写入文件的情况下,关闭文件句柄通常是一个好习惯。
- 最后,我们再次读取文件内容并将其写入控制台日志。这是为了检查该行是否已成功写入文件。
当设置了上述代码,并在 Visual Studio 中运行项目时,您将获得以下输出。
输出:-
从输出中,您可以看到行“Guru99 – ASP.Net”已成功添加到文件中。控制台中可以看到所有 3 行文本。
摘要
- 流用作应用程序和文件之间的中间层。
- 当需要从文件读取数据时,使用 StreamReader。
- 当需要将数据写入文件时,使用 StreamWriter。