StreamWriter 类
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
实现一个 TextWriter,用于以特定编码将字符写入流。
public ref class StreamWriter : System::IO::TextWriter
public class StreamWriter : System.IO.TextWriter
[System.Serializable]
public class StreamWriter : System.IO.TextWriter
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class StreamWriter : System.IO.TextWriter
type StreamWriter = class
inherit TextWriter
[<System.Serializable>]
type StreamWriter = class
inherit TextWriter
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type StreamWriter = class
inherit TextWriter
Public Class StreamWriter
Inherits TextWriter
- 继承
- 继承
- 属性
以下示例演示如何使用 StreamWriter 对象编写列出 C 驱动器上的目录的文件,然后使用 StreamReader 对象读取和显示每个目录名称。 最佳做法是在 using
语句中使用这些对象,以便正确释放非托管资源。
using
语句在使用该语句的代码已完成时自动调用对象 Dispose。 此示例中使用的构造函数不支持在 Windows 应用商店应用中使用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace StreamReadWrite
{
class Program
{
static void Main(string[] args)
{
// Get the directories currently on the C drive.
DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();
// Write each directory name to a file.
using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
{
foreach (DirectoryInfo dir in cDirs)
{
sw.WriteLine(dir.Name);
}
}
// Read and show each line from the file.
string line = "";
using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
{
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
}
Imports System.IO
Class Program
Shared Sub Main()
' Get the directories currently on the C drive.
Dim cDirs As DirectoryInfo() = New DirectoryInfo("c:\").GetDirectories()
' Write each directory name to a file.
Using sw As StreamWriter = New StreamWriter("CDriveDirs.txt")
For Each Dir As DirectoryInfo In cDirs
sw.WriteLine(Dir.Name)
Next
End Using
'Read and show each line from the file.
Dim line As String = ""
Using sr As StreamReader = New StreamReader("CDriveDirs.txt")
Do
line = sr.ReadLine()
Console.WriteLine(line)
Loop Until line Is Nothing
End Using
End Sub
End Class
StreamWriter 专用于特定编码中的字符输出,而派生自 Stream 的类专为字节输入和输出而设计。
重要
此类型实现 IDisposable 接口。 使用完该类型后,应直接或间接释放它。 若要直接释放类型,请在 try
/catch
块中调用其 Dispose 方法。 若要间接处理它,请使用语言构造(如 using
(在 C# 中)或 Using
(在 Visual Basic 中)。 有关详细信息,请参阅 IDisposable 接口主题中的“使用实现 IDisposable 的对象”部分。
除非另有指定,否则 StreamWriter 默认使用 UTF8Encoding 实例。 此 UTF8Encoding
实例在没有字节顺序标记(BOM)的情况下构造,因此其 GetPreamble 方法返回空字节数组。 此构造函数的默认 UTF-8 编码对无效字节引发异常。 此行为与 Encoding.UTF8 属性中的编码对象提供的行为不同。 若要指定 BOM 并确定是否对无效字节引发异常,请使用接受编码对象的构造函数作为参数,例如 StreamWriter(String, Boolean, Encoding) 或 StreamWriter。
默认情况下,StreamWriter 不是线程安全的。 有关线程安全的包装器,请参阅 TextWriter.Synchronized。
有关常见 I/O 任务的列表,请参阅 常见 I/O 任务。
Stream |
使用 UTF-8 编码和默认缓冲区大小初始化指定流的 StreamWriter 类的新实例。 |
Stream |
使用指定的编码和默认缓冲区大小初始化指定流的 StreamWriter 类的新实例。 |
Stream |
使用指定的编码和缓冲区大小初始化指定流的 StreamWriter 类的新实例。 |
Stream |
使用指定的编码和缓冲区大小初始化指定流的 StreamWriter 类的新实例,并选择性地使流保持打开状态。 |
Stream |
使用默认编码和缓冲区大小初始化指定文件 StreamWriter 类的新实例。 |
Stream |
使用默认编码和缓冲区大小初始化指定文件 StreamWriter 类的新实例。 如果文件存在,可以覆盖或追加到该文件。 如果该文件不存在,此构造函数将创建一个新文件。 |
Stream |
使用指定的编码和默认缓冲区大小初始化指定文件的 StreamWriter 类的新实例。 如果文件存在,可以覆盖或追加到该文件。 如果该文件不存在,此构造函数将创建一个新文件。 |
Stream |
使用指定的编码和缓冲区大小为指定路径上的指定文件初始化 StreamWriter 类的新实例。 如果文件存在,可以覆盖或追加到该文件。 如果该文件不存在,此构造函数将创建一个新文件。 |
Stream |
使用指定的编码为指定文件初始化 StreamWriter 类的新实例,并使用指定的 FileStreamOptions 对象进行配置。 |
Stream |
使用默认编码为指定文件初始化 StreamWriter 类的新实例,并使用指定的 FileStreamOptions 对象进行配置。 |
Core |
存储用于此 |
Null |
提供一个 |
Auto |
获取或设置一个值,该值指示每次调用 Write(Char)后,StreamWriter 是否将其缓冲区刷新到基础流。 |
Base |
获取与后盾存储接口的基础流。 |
Encoding |
获取在其中写入输出的 Encoding。 |
Format |
获取一个对象,该对象控制格式设置。 (继承自 TextWriter) |
New |
获取或设置当前 |
IDisposable. |
有关此成员的说明,请参阅 Dispose()。 (继承自 TextWriter) |
Configure |
配置如何执行从异步可释放项返回的任务的 await。 |
产品 | 版本 |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 |
UWP | 10.0 |