C# 教程中的 Stream:StreamReader 和 StreamWriter [示例]
什么是 C# Stream?
在 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# 中用于定义从文件到应用程序的流。每当从文件读取数据时,数据就会从文件推送到流。文件。OpenText 用于以只读模式打开文件“Example.txt”。然后将文件的处理程序发送到流读取器对象。
- 接下来,我们定义一个临时变量“s”,用于从文件读取所有数据。
- 然后我们使用流读取器方法 ReadLine 从流缓冲区读取每一行。执行此操作时 操作,每行将首先从文件传输到缓冲区。然后字符串行将从缓冲区传输到变量“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。