本文是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);
}
}
}
代码说明:
- 首先,我们声明一个流读取器对象。StreamReader对象在C#中用于定义从文件到应用程序的流。每当从文件中读取数据时,数据就会从文件中推送到流中。File.OpenText用于以只读模式打开文件“ 买菜清单.txt”。然后将文件的处理程序发送到流读取器对象。
- 接下来,我们定义一个临时变量“s”,该变量将用于读取文件中的所有数据。
- 然后,我们使用流读取器方法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));
}
}
代码说明:
- 首先,我们声明一个StreamWriter对象,StreamWriter对象在C#中用于定义写入流,然后使用该流将数据从应用程序写入文件。每当需要写入数据时,数据就会从应用程序推送到流中。File.AppendText命令用于在追加模式下打开文件“ 买菜清单.txt”,然后将文件的处理程序发送到流编写器(StreamWriter)对象。
- 我们使用流写入方法WriteLine将“金针菇-3.6元/1.6斤”写入文件。
- 然后,我们在写入文件后关闭流写入器。通常,当不再需要出于编写目的而使用文件时,关闭文件处理程序是一个好习惯。这里提下,凡是带有Close()的说明它一般都是非托管资源,如果您不主动释放,那么该对象的内存就还在,如果一个对象是这样子,随着你越来越多次的调用,并且都不释放,内存就会升高。这就叫“内存泄漏”。
- 最后,我们再次读取文件的内容并将其写入控制台日志。这是检查行是否已写入文件。
如果您编写上面的代码,并使用Visual Studio 2019运行该项目时,您将获得以下输出:
祝您用餐愉快。