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

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

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 的资源。

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(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(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)

配置如何执行从异步可处置项返回的任务的等待。

适用于

另请参阅