StreamWriter 类

定义

实现一个 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
继承
属性

示例

以下示例演示如何使用 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 任务

构造函数

StreamWriter(Stream)

使用 UTF-8 编码和默认缓冲区大小初始化指定流的 StreamWriter 类的新实例。

StreamWriter(Stream, Encoding)

使用指定的编码和默认缓冲区大小初始化指定流的 StreamWriter 类的新实例。

StreamWriter(Stream, Encoding, Int32)

使用指定的编码和缓冲区大小初始化指定流的 StreamWriter 类的新实例。

StreamWriter(Stream, Encoding, Int32, Boolean)

使用指定的编码和缓冲区大小初始化指定流的 StreamWriter 类的新实例,并选择性地使流保持打开状态。

StreamWriter(String)

使用默认编码和缓冲区大小初始化指定文件 StreamWriter 类的新实例。

StreamWriter(String, Boolean)

使用默认编码和缓冲区大小初始化指定文件 StreamWriter 类的新实例。 如果文件存在,可以覆盖或追加到该文件。 如果该文件不存在,此构造函数将创建一个新文件。

StreamWriter(String, Boolean, Encoding)

使用指定的编码和默认缓冲区大小初始化指定文件的 StreamWriter 类的新实例。 如果文件存在,可以覆盖或追加到该文件。 如果该文件不存在,此构造函数将创建一个新文件。

StreamWriter(String, Boolean, Encoding, Int32)

使用指定的编码和缓冲区大小为指定路径上的指定文件初始化 StreamWriter 类的新实例。 如果文件存在,可以覆盖或追加到该文件。 如果该文件不存在,此构造函数将创建一个新文件。

StreamWriter(String, Encoding, FileStreamOptions)

使用指定的编码为指定文件初始化 StreamWriter 类的新实例,并使用指定的 FileStreamOptions 对象进行配置。

StreamWriter(String, FileStreamOptions)

使用默认编码为指定文件初始化 StreamWriter 类的新实例,并使用指定的 FileStreamOptions 对象进行配置。

字段

CoreNewLine

存储用于此 TextWriter的换行符。

(继承自 TextWriter)
Null

提供一个 StreamWriter,其中没有可写入但无法从中读取的后盾存储。

属性

AutoFlush

获取或设置一个值,该值指示每次调用 Write(Char)后,StreamWriter 是否将其缓冲区刷新到基础流。

BaseStream

获取与后盾存储接口的基础流。

Encoding

获取在其中写入输出的 Encoding

FormatProvider

获取一个对象,该对象控制格式设置。

(继承自 TextWriter)
NewLine

获取或设置当前 TextWriter使用的行终止符字符串。

(继承自 TextWriter)

方法

Close()

关闭当前 StreamWriter 对象和基础流。

Close()

关闭当前编写器并释放与编写器关联的任何系统资源。

(继承自 TextWriter)
CreateObjRef(Type)

创建一个对象,其中包含生成用于与远程对象通信的代理所需的所有相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放 TextWriter 对象使用的所有资源。

(继承自 TextWriter)
Dispose(Boolean)

导致任何缓冲数据写入基础流,释放 StreamWriter使用的非托管资源,以及(可选)托管资源。

DisposeAsync()

将任何缓冲的数据异步写入基础流,并释放 StreamWriter使用的非托管资源。

DisposeAsync()

异步释放 TextWriter 对象使用的所有资源。

(继承自 TextWriter)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
Finalize()

在垃圾回收器回收当前 StreamWriter 之前释放当前 StreamWriter 的资源。

Flush()

清除当前编写器的所有缓冲区,并导致任何缓冲数据写入基础流。

FlushAsync()

异步清除此流的所有缓冲区,并导致任何缓冲数据写入基础设备。

FlushAsync()

异步清除当前编写器的所有缓冲区,并导致任何缓冲数据写入基础设备。

(继承自 TextWriter)
FlushAsync(CancellationToken)

异步清除此流的所有缓冲区,并导致任何缓冲数据写入基础设备。

FlushAsync(CancellationToken)

异步清除当前编写器的所有缓冲区,并导致任何缓冲数据写入基础设备。

(继承自 TextWriter)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时.

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetType()

获取当前实例的 Type

(继承自 Object)
InitializeLifetimeService()
已过时.

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
Write(Boolean)

Boolean 值的文本表示形式写入文本流。

(继承自 TextWriter)
Write(Char)

将字符写入流。

Write(Char[])

将字符数组写入流。

Write(Char[], Int32, Int32)

将字符的子数组写入流。

Write(Decimal)

将小数值的文本表示形式写入文本流。

(继承自 TextWriter)
Write(Double)

将 8 字节浮点值的文本表示形式写入文本流。

(继承自 TextWriter)
Write(Int32)

将 4 字节带符号整数的文本表示形式写入文本流。

(继承自 TextWriter)
Write(Int64)

将 8 字节有符号整数的文本表示形式写入文本流。

(继承自 TextWriter)
Write(Object)

通过对该对象调用 ToString 方法,将对象的文本表示形式写入文本流。

(继承自 TextWriter)
Write(ReadOnlySpan<Char>)

将字符范围写入流。

Write(ReadOnlySpan<Char>)

将字符范围写入文本流。

(继承自 TextWriter)
Write(Single)

将 4 字节浮点值的文本表示形式写入文本流。

(继承自 TextWriter)
Write(String)

将字符串写入流。

Write(String, Object)

使用与 Format(String, Object) 方法相同的语义将格式化字符串写入流。

Write(String, Object)

使用与 Format(String, Object) 方法相同的语义将格式化字符串写入文本流。

(继承自 TextWriter)
Write(String, Object, Object)

使用与 Format(String, Object, Object) 方法相同的语义将格式化字符串写入流。

Write(String, Object, Object)

使用与 Format(String, Object, Object) 方法相同的语义将格式化字符串写入文本流。

(继承自 TextWriter)
Write(String, Object, Object, Object)

使用与 Format(String, Object, Object, Object) 方法相同的语义将格式化字符串写入流。

Write(String, Object, Object, Object)

使用与 Format(String, Object, Object, Object) 方法相同的语义将格式化字符串写入文本流。

(继承自 TextWriter)
Write(String, Object[])

使用与 Format(String, Object[]) 方法相同的语义将格式化字符串写入流。

Write(String, Object[])

使用与 Format(String, Object[]) 方法相同的语义将格式化字符串写入文本流。

(继承自 TextWriter)
Write(String, ReadOnlySpan<Object>)

使用与 Format(String, ReadOnlySpan<Object>)相同的语义将格式化字符串写入流。

Write(String, ReadOnlySpan<Object>)

使用与 Format(String, ReadOnlySpan<Object>)相同的语义将格式化字符串写入文本流。

(继承自 TextWriter)
Write(StringBuilder)

将字符串生成器写入文本流。

(继承自 TextWriter)
Write(UInt32)

将 4 字节无符号整数的文本表示形式写入文本流。

(继承自 TextWriter)
Write(UInt64)

将 8 字节无符号整数的文本表示形式写入文本流。

(继承自 TextWriter)
WriteAsync(Char)

将字符异步写入流。

WriteAsync(Char)

以异步方式将字符写入文本流。

(继承自 TextWriter)
WriteAsync(Char[])

以异步方式将字符数组写入文本流。

(继承自 TextWriter)
WriteAsync(Char[], Int32, Int32)

将字符的子数组异步写入流。

WriteAsync(Char[], Int32, Int32)

以异步方式将字符的子数组写入文本流。

(继承自 TextWriter)
WriteAsync(ReadOnlyMemory<Char>, CancellationToken)

将字符内存区域异步写入流。

WriteAsync(ReadOnlyMemory<Char>, CancellationToken)

将字符内存区域异步写入文本流。

(继承自 TextWriter)
WriteAsync(String)

将字符串异步写入流。

WriteAsync(String)

以异步方式将字符串写入文本流。

(继承自 TextWriter)
WriteAsync(StringBuilder, CancellationToken)

将字符串生成器异步写入文本流。

(继承自 TextWriter)
WriteLine()

将行终止符写入文本流。

(继承自 TextWriter)
WriteLine(Boolean)

Boolean 值的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Char)

将字符写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Char[])

将字符数组写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Char[], Int32, Int32)

将字符的子数组写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Decimal)

将小数值的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Double)

将 8 字节浮点值的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Int32)

将 4 字节带符号整数的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Int64)

将 8 字节有符号整数的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Object)

通过对该对象调用 ToString 方法,然后调用行终止符,将对象的文本表示形式写入文本流。

(继承自 TextWriter)
WriteLine(ReadOnlySpan<Char>)

将字符范围的文本表示形式写入流,后跟行终止符。

WriteLine(ReadOnlySpan<Char>)

将字符范围的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(Single)

将 4 字节浮点值的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(String)

将字符串写入流,后跟行终止符。

WriteLine(String)

将字符串写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(String, Object)

使用与 Format(String, Object) 方法相同的语义将格式化字符串和新行写入流。

WriteLine(String, Object)

使用与 Format(String, Object) 方法相同的语义将格式化字符串和新行写入文本流。

(继承自 TextWriter)
WriteLine(String, Object, Object)

使用与 Format(String, Object, Object) 方法相同的语义将格式化字符串和新行写入流。

WriteLine(String, Object, Object)

使用与 Format(String, Object, Object) 方法相同的语义将格式化字符串和新行写入文本流。

(继承自 TextWriter)
WriteLine(String, Object, Object, Object)

使用与 Format(String, Object)相同的语义将格式化字符串和新行写出流。

WriteLine(String, Object, Object, Object)

使用与 Format(String, Object)相同的语义,将格式化字符串和新行写出文本流。

(继承自 TextWriter)
WriteLine(String, Object[])

使用与 Format(String, Object)相同的语义将格式化字符串和新行写出流。

WriteLine(String, Object[])

使用与 Format(String, Object)相同的语义,将格式化字符串和新行写出文本流。

(继承自 TextWriter)
WriteLine(String, ReadOnlySpan<Object>)

使用与 Format(String, ReadOnlySpan<Object>)相同的语义将格式化字符串和新行写出流。

WriteLine(String, ReadOnlySpan<Object>)

使用与 Format(String, ReadOnlySpan<Object>)相同的语义,将格式化字符串和新行写出文本流。

(继承自 TextWriter)
WriteLine(StringBuilder)

将字符串生成器的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(UInt32)

将 4 字节无符号整数的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLine(UInt64)

将 8 字节无符号整数的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLineAsync()

将行终止符异步写入流。

WriteLineAsync()

将行终止符异步写入文本流。

(继承自 TextWriter)
WriteLineAsync(Char)

将字符异步写入流,后跟行终止符。

WriteLineAsync(Char)

将字符异步写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLineAsync(Char[])

将字符数组异步写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLineAsync(Char[], Int32, Int32)

将字符的子数组异步写入流,后跟行终止符。

WriteLineAsync(Char[], Int32, Int32)

将字符的子数组异步写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLineAsync(ReadOnlyMemory<Char>, CancellationToken)

将字符内存区域的文本表示形式异步写入流,后跟行终止符。

WriteLineAsync(ReadOnlyMemory<Char>, CancellationToken)

将字符内存区域的文本表示形式异步写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLineAsync(String)

以异步方式将字符串写入流,后跟行终止符。

WriteLineAsync(String)

将字符串异步写入文本流,后跟行终止符。

(继承自 TextWriter)
WriteLineAsync(StringBuilder, CancellationToken)

以异步方式将字符串生成器的文本表示形式写入文本流,后跟行终止符。

(继承自 TextWriter)

显式接口实现

IDisposable.Dispose()

有关此成员的说明,请参阅 Dispose()

(继承自 TextWriter)

扩展方法

ConfigureAwait(IAsyncDisposable, Boolean)

配置如何执行从异步可释放释放任务返回的 await。

适用于

另请参阅