C# 中的 Stream:StreamReader 和 StreamWriter [例子]
⚡ 智能摘要
AC# Stream 是应用程序和文件之间的一个层,它允许您以小块形式读取或写入数据。在这里,您将学习 StreamReader 和 Stream 的用法。Writer 工作,并举例说明和主流类型。
什么是 C# Stream?
在 C# 文件操作中,通常使用流来读取和写入文件。流是在应用程序和文件之间创建的附加层。流用于确保对文件的读取和写入操作顺利进行。
流通常用于从大型文件中读取数据。通过使用流,大型文件中的数据被分解成小块并发送到流。然后可以从应用程序中读取这些数据块。
将其分解成小块的原因在于一次性读取大文件会对性能产生影响。如果您一次性读取 100 MB 的文件数据,您的应用程序可能会挂起并变得不稳定。最好的方法是使用流将文件分解成可管理的块。
因此,当对文件执行写入操作时,要写入的数据首先写入流。然后,数据从流写入文件。读取操作也是如此。在读取操作中,数据首先从文件传输到流。然后通过流从应用程序读取数据。让我们看一个例子,了解如何使用流进行读写。
C# 中的流类型
C# 中的所有流类都派生自 abs。tract Stream 在课堂上 System.IO 命名空间。每种类型都面向不同的数据源,但共享相同的读取和写入方法。下面列出了最常用的流。
- 的FileStream 从磁盘读取和写入文件,一次读取一个字节或一个块。
- MemoryStream 将数据存储在内存中而不是文件中,这对于临时缓冲区非常有用。
- BufferedStream 封装另一个流,以减少缓慢的磁盘或网络操作次数。
- NetworkStream 通过网络套接字发送和接收数据。
C# 提供了用于处理文本的功能 StreamReader 和 StreamWriter 辅助类,用于封装流,将在下一节中介绍。
流读取器
流读取器用于使用流从文件中读取数据。首先将文件中的数据读入流中。然后应用程序从流中读取数据。
为了举个例子,我们假设 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(); } } }
Code 解释:-
- 首先,我们声明一个流读取器对象。流读取器对象在 C# 中用于定义从文件到应用程序的流。每当从文件读取数据时,数据就会从文件推送到流。文件。OpenText 用于以只读模式打开文件“Example.txt”。然后将文件的处理程序发送到流读取器对象。
- 接下来,我们定义一个临时变量“s”,用于从文件读取所有数据。
- 然后我们使用流读取器方法 ReadLine 从流缓冲区读取每一行。执行此操作时 操作,每行将首先从文件传输到缓冲区。然后字符串行将从缓冲区传输到变量“s”。然后我们将字符串“s”的内容写入控制台。
设置上述代码后,使用以下方法运行项目 Visual Studio中,你将获得以下输出。
输出:-
从输出中,你可以看到 Stream Reader 从文件中读取了两行。最后,从流中读取的字符串行被发送到控制台。
资讯 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(); } } }
Code 解释:-
- 首先,我们声明一个流写入器对象。流写入器对象在 C# 中用于定义流。然后,该流用于将数据从应用程序写入文件。每当需要写入数据时,数据都会从应用程序推送到流。File.AppendText 命令用于以追加模式打开文件“Example.txt”。然后将文件的处理程序发送到流写入器对象。
- 我们使用流写入方法 Writeline 来写入该行“Guru将“99 – ASP.Net”添加到流中。然后,该行将从流中写入文件。
- 然后我们在写入文件后关闭流写入器。当文件不再需要用于写入目的时,关闭文件处理程序通常是一种很好的做法。
- 最后,我们再次读取文件内容并将其写入控制台日志。这是为了检查该行是否已写入文件。
当设置了上述代码并使用 Visual Studio 运行项目时,您将获得以下输出。
输出:-
从输出结果可以看出,该行“Guru“99 – ASP.Net”已成功添加到文件中。控制台中可以看到全部3行文本。





