C#初学者教程系列20:Stream流读写

本文是C#初学者简单教程,这是第20篇。感谢观看,记得关注我,后续还有更多教程文章,谢谢。

本文环境为Visual Studio 2019。

一、介绍

在C#文件操作中,通常使用流来读取和写入文件。流是在应用程序和文件之间创建的层。流Stream用于确保对文件的流畅读写操作。

从大文件读取数据时通常使用流。通过使用流,大型文件中的数据被分解成小块,然后发送到流中,然后可以从应用程序中读取这些数据块。

将其分解成小块的原因是因为一次读取大文件会对性能产生影响。如果一次性读取一个100 MB的文件中的数据,则应用程序可能会挂起并变得不稳定。最好的方法是使用流将文件分解为可管理的块。

因此,当对文件执行写操作时,首先将要写入的数据写入流中。然后,从流中将数据写入文件。读取操作也是如此。在读取操作中,数据首先从文件传输到流。然后通过流从应用程序读取数据。

二、StreamReader

StreamReader用于从文件读取数据。来自文件的数据首先被读入流中。之后,应用程序从流中读取数据。

对于我们的示例,我们假定D盘有一个名为“买菜清单.txt”的文件。该文件将是一个简单的文本文件,并具有两行,如下所示

  • 罗非鱼-8元/1.5斤
  • 大白菜-2.3元/1.2斤

下面我们将创建一个简单的控制台应用程序并使用文件流StreamReader,说明如何使用流从文件中读取数据。

在program.cs文件中输入以下代码:

static void Main(string[] args)
{
    String path = @"D:\买菜清单.txt";

    using (StreamReader sr = File.OpenText(path))
    {
        String s = "";

        while ((s = sr.ReadLine()) != null)
        {
            Console.WriteLine(s);
        }
    }
}

代码说明:

  1. 首先,我们声明一个流读取器对象。StreamReader对象在C#中用于定义从文件到应用程序的流。每当从文件中读取数据时,数据就会从文件中推送到流中。File.OpenText用于以只读模式打开文件“ 买菜清单.txt”。然后将文件的处理程序发送到流读取器对象。
  2. 接下来,我们定义一个临时变量“s”,该变量将用于读取文件中的所有数据。
  3. 然后,我们使用流读取器方法ReadLine从流缓冲区读取每一行。当我们执行此操作时,每行将首先从文件传输到缓冲区。然后,字符串行将从缓冲区传输到变量“s”。然后,我们将字符串“s”的内容写入控制台。

如果您编写上面的代码,并使用Visual Studio 2019运行该项目时,您将获得以下输出:

三、StreamWriter

StreamWriter用于将数据写入文件。来自应用程序的数据首先被写入流中,之后,流将数据写入文件。

让我们看一个例子,说明如何使用流从文件写入数据。在program.cs文件中输入以下代码。

static void Main(string[] args)
{
    String path = @"D:\买菜清单.txt";

    using (StreamWriter sr = File.AppendText(path))
    {
        sr.WriteLine("");
        sr.WriteLine("金针菇-3.6元/1.6斤");
        sr.Close();

        Console.WriteLine(File.ReadAllText(path));
    }
}

代码说明:

  1. 首先,我们声明一个StreamWriter对象,StreamWriter对象在C#中用于定义写入流,然后使用该流将数据从应用程序写入文件。每当需要写入数据时,数据就会从应用程序推送到流中。File.AppendText命令用于在追加模式下打开文件“ 买菜清单.txt”,然后将文件的处理程序发送到流编写器(StreamWriter)对象。
  2. 我们使用流写入方法WriteLine将“金针菇-3.6元/1.6斤”写入文件。
  3. 然后,我们在写入文件后关闭流写入器。通常,当不再需要出于编写目的而使用文件时,关闭文件处理程序是一个好习惯。这里提下,凡是带有Close()的说明它一般都是非托管资源,如果您不主动释放,那么该对象的内存就还在,如果一个对象是这样子,随着你越来越多次的调用,并且都不释放,内存就会升高。这就叫“内存泄漏”。
  4. 最后,我们再次读取文件的内容并将其写入控制台日志。这是检查行是否已写入文件。

如果您编写上面的代码,并使用Visual Studio 2019运行该项目时,您将获得以下输出:

 

祝您用餐愉快。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值