在这里插入代码片
StreamReader 和 StreamWriter 位于 System.IO 命名空间中。当您想要读取或写入基于字符的数据时,这两个类都很有用。这两个类都处理 Unicode 字符。
StreamReader 派生自抽象类“TextReader”,StreamWriter 派生自“TextWriter”。
下表显示了 StreamWriter 类的一些成员。
成员 | 描述 |
---|---|
Close() | 关闭当前StreamWriter对象和底层流,此方法相当于Dispose(),用于释放资源。 |
Write() | 此方法用于将数据写入不带换行符的文本流。 |
WriteLine() | 此方法用于将数据写入带有新行的文本流。 |
下表显示了 StreamReader 类的一些成员。
成员 | 描述 |
---|---|
Close() | 关闭当前StreamReader对象和底层流,此方法相当于Dispose(),用于释放资源。 |
Read() | 从输入流读取下一个字符。 |
ReadLine() | 从当前流中读取一行字符并以字符串形式返回数据。 |
ReadToEnd() | 从当前位置读取流直至流的末尾。 |
让我们看一个例子,我们使用 StreamWriter 将数据写入文件,并使用 StreamReader 从文件读取数据。为了读取或写入文件,File 类提供了 2 个方法,分别返回 StreamReader 或 StreamWriter 对象。
- CreateText(string filepath):将数据写入文件;返回StreamWriter对象
- OpenText(string filepath):从文件读取数据;返回一个StreamReader对象
下面介绍如何创建示例。
创建一个名为“StreamWriterAndStreamReaderExample”的新项目,并创建 2 个静态方法,一个用于读取文件,另一个用于写入文件。换句话说,就是 ReadFromFile() 和 WriteToFile()。在程序的源文件中导入 System.IO 命名空间,其中包含处理文件输入和输出的所有类。
在这个例子中,我们将把从 1 到 10 的表写入一个文件中,并使用这些类读取该文件。
Program.cs
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Title = "StreamReader and StreamWriter";
WriteToFile();
ReadFromFile();
Console.ForegroundColor = ConsoleColor.Gray;
}
public static void ReadFromFile()
{
using (StreamReader sr = File.OpenText(@"E:\Programming Practice\CSharp\Console\table.tbl"))
{
string tables = null;
while ((tables = sr.ReadLine()) != null)
{
Console.WriteLine("{0}", tables);
}
Console.WriteLine("Table Printed.");
}
}
public static void WriteToFile()
{
using (StreamWriter sw = File.CreateText(@"E:\Programming Practice\CSharp\Console\table.tbl"))
{
sw.WriteLine("Please find the below generated table of 1 to 10");
sw.WriteLine("");
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= 10; j++)
{
sw.WriteLine("{0}x{1}= {2}", i, j, (i * j));
}
sw.WriteLine("==============");
}
Console.WriteLine("Table successfully written on file.");
}
}
}
在前面的例子中,WriteToFile() 方法用于将数据写入文件“table.tbl”,然后使用 ReadFromFile() 方法从该文件读取数据。您可以创建具有任何扩展名的文件,如 .txt、.abc、.tlb 等。为了将数据写入文件,我们创建了一个 StreamWriter 对象,该对象调用 WriteLine() 方法来写入数据;为了从文件读取数据,我们创建了一个 StreamReader 对象,该对象调用 ReadLine() 方法;在读取文件时,数据将存储在 while 循环中的字符串中,直到读取所有数据。在 Main() 中调用这两个方法。
当您运行应用程序时,WriteToFile() 将在指定位置创建一个文件,如下所示。
用记事本打开此文件来查看内容。
输出
希望本文能帮助您理解 C# 中的 StreamReader 和 StreamWriter 类。