StreamWriter
StreamWriter 是 .NET Framework 中的一个类,它提供了一种简便的方法,用于将文本写入文件或者流中。StreamWriter 继承了 TextWriter 类,可以方便地使用各种编码方式写入数据。本文将介绍 StreamWriter 类的基本用法,并在实际应用中提供一些示例。
1. StreamWriter 的基本用法
StreamWriter 类可以通过以下的构造函数进行初始化:
```csharp public StreamWriter(Stream stream); public StreamWriter(String path); public StreamWriter(Stream stream, Encoding encoding); public StreamWriter(String path, bool append); public StreamWriter(String path, bool append, Encoding encoding); ```通过传递一个流或者文件路径作为参数,我们可以创建一个 StreamWriter 的实例。除此之外,我们还可以通过指定编码方式和是否追加到文件末尾来进行初始化。
下面的示例展示了如何使用 StreamWriter 将文本写入一个文件:
```csharp using System; using System.IO; class Program { static void Main() { using (StreamWriter writer = new StreamWriter(\"text.txt\")) { writer.WriteLine(\"Hello, StreamWriter!\"); writer.WriteLine(\"This is a sample text file.\"); } } } ```在示例中,我们使用 `using` 语句创建了一个 StreamWriter 对象,并将其与文件 \"text.txt\" 关联起来。然后使用 `WriteLine` 方法分别写入了两行文本。需要注意的是,在使用完 StreamWriter 对象后,我们必须调用 `Dispose` 方法或者使用 `using` 语句来释放资源和关闭文件流。
2. 控制编码方式
StreamWriter 类的一个重要特性是可以使用不同的编码方式来写入数据。我们可以通过不同的构造函数来指定编码方式,也可以通过 StreamWriter 的 Encoding 属性进行设置。
下面的示例演示了如何使用不同的编码方式来写入数据:
```csharp using System; using System.IO; using System.Text; class Program { static void Main() { using (StreamWriter writer = new StreamWriter(\"text.txt\", true, Encoding.Unicode)) { writer.WriteLine(\"Hello, StreamWriter with Unicode encoding!\"); } using (StreamWriter writer = new StreamWriter(\"text.txt\", true, Encoding.UTF8)) { writer.WriteLine(\"Hello, StreamWriter with UTF-8 encoding!\"); } } } ```在示例中,我们首先创建了一个使用 Unicode 编码的 StreamWriter 对象,并将其关联到文件 \"text.txt\"。然后我们使用 `WriteLine` 方法写入了一行文本。接着,我们创建了另一个使用 UTF-8 编码的 StreamWriter 对象,并将其追加到同一文件中。
3. 使用 StreamWriter 写入流
除了写入文件,StreamWriter 还可以很方便地写入流。以下示例演示了如何使用 StreamWriter 将文本写入内存流,并使用 StreamReader 读取出来:
```csharp using System; using System.IO; using System.Text; class Program { static void Main() { using (MemoryStream memoryStream = new MemoryStream()) { using (StreamWriter writer = new StreamWriter(memoryStream, Encoding.UTF8)) { writer.WriteLine(\"Hello, StreamWriter with memory stream!\"); writer.Flush(); memoryStream.Position = 0; using (StreamReader reader = new StreamReader(memoryStream, Encoding.UTF8)) { string text = reader.ReadToEnd(); Console.WriteLine(text); } } } } } ```在示例中,我们首先创建了一个内存流 MemoryStream,并将其作为参数传递给 StreamWriter。然后我们使用 StreamWriter 写入了一行文本后调用 `Flush` 方法确保数据被写入流中。接着,我们将内存流的位置重置为 0,并将其作为参数传递给 StreamReader。最后,我们使用 StreamReader 的 ReadToEnd 方法读取流中的数据,并将其打印到控制台上。
到此为止,我们已经了解了 StreamWriter 类的基本用法。通过 StreamWriter,我们可以方便地将文本写入文件或者流中,并可以灵活地控制编码方式。希望这篇文章能够帮助你理解和使用 StreamWriter。