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();
  }
 }
}

代码说明:-

  1. 首先,我们声明一个流读取器对象。流读取器对象在 C# 中用于定义从文件到应用程序的流。每当从文件读取数据时,数据就会从文件推送到流。文件。OpenText 用于以只读模式打开文件“Example.txt”。然后将文件的处理程序发送到流读取器对象。
  2. 接下来,我们定义一个临时变量“s”,用于从文件读取所有数据。
  3. 然后我们使用流读取器方法 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();
  }
 }
}

代码说明:-

  1. 首先,我们声明一个流写入器对象。流写入器对象在 C# 中用于定义流。然后,该流用于将数据从应用程序写入文件。每当需要写入数据时,数据都会从应用程序推送到流。File.AppendText 命令用于以追加模式打开文件“Example.txt”。然后将文件的处理程序发送到流写入器对象。
  2. 我们使用流写入方法 Writeline 将行“Guru99 – ASP.Net”写入流。然后,该行将从流写入文件。
  3. 然后我们在写入文件后关闭流写入器。当文件不再需要用于写入目的时,关闭文件处理程序通常是一种很好的做法。
  4. 最后,我们再次读取文件内容并将其写入控制台日志。这是为了检查该行是否已写入文件。

当设置了上述代码并使用 Visual Studio 运行项目时,您将获得以下输出。

输出:-

流写入器

从输出中,您可以看到“Guru99 – ASP.Net”行已成功添加到文件中。所有 3 行文本都可以在控制台中看到。

总结

  • 流用作应用程序和文件之间的中间级别。
  • 每当需要从文件读取数据时就会使用 StreamReader。
  • 每当需要将数据写入文件时,就会使用 Streamwriter。