C# Stream 教程:StreamReader、StreamWriter 与示例
在 C# 文件操作中,通常使用流来读取和写入文件。流是在应用程序和文件之间创建的附加层。流用于保证对文件进行流畅的读写操作。
从大文件中读取数据时通常使用流。通过使用流,来自大文件的数据被分解成小块并发送到流中。然后可以从应用程序中读取这些数据块。
将其分解为小块的原因是因为一次性读取大文件会影响性能。如果您要一次性读取 100 MB 文件中的数据,您的应用程序可能会挂起并变得不稳定。最好的方法是使用流将文件分解为可管理的块。
因此,当对文件执行写入操作时,要写入的数据首先写入流中。然后从流中将数据写入文件。读操作也是如此。在读操作中,数据首先从文件传输到流中。然后通过流从应用程序中读取数据。让我们看一个如何使用流进行读写的示例。
在本教程中,您将学习 -
- 串流阅读器
- 流编写器
流阅读器
流阅读器用于使用流从文件中读取数据。文件中的数据首先被读入流中。此后应用程序从流中读取数据。
对于我们的示例,我们假设 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 从流缓冲区中读取每一行。当我们执行这个操作时,每一行都会首先从文件传输到缓冲区。然后字符串 line 将从缓冲区传输到变量“s”。然后我们将字符串“s”的内容写入控制台。
当上面的代码设置好后,使用 Visual Studio 运行项目,你会得到下面的输出。
输出:-
从输出中,您可以看到 Stream Reader 从文件中读取了这两行。最后,将从流中读取的字符串的行发送到控制台。
流编写器
流写入器用于使用流将数据写入文件。来自应用程序的数据首先写入流中。之后,流将数据写入文件。让我们看一个示例,说明如何使用流从文件中写入数据。在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。
C语言