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 這些物件,以便正確處置 Unmanaged 資源。 語句 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)

使用指定的編碼方式,並使用 FileStreamOptions 指定的 物件設定,初始化 指定檔案之 類別的新實例 StreamWriter

StreamWriter(String, FileStreamOptions)

使用預設編碼方式,並使用指定的 FileStreamOptions 物件設定,初始化 指定檔案之 類別的新實例 StreamWriter

欄位

CoreNewLine

儲存這個 TextWriter 所使用的新行字元。

(繼承來源 TextWriter)
Null

提供 StreamWriter,但不包含可寫入但無法讀取的備份存放區。

屬性

AutoFlush

取得或設定值,指出 StreamWriter 在每次呼叫 Write(Char) 之後,是否要將其緩衝區清除到基礎資料流。

BaseStream

取得以備份存放區作介面的基礎資料流。

Encoding

取得寫入輸出的 Encoding

FormatProvider

取得控制格式設定的物件。

(繼承來源 TextWriter)
NewLine

取得或設定目前 TextWriter 所使用的行結束字元字串。

(繼承來源 TextWriter)

方法

Close()

關閉目前的 StreamWriter 物件和基礎資料流。

Close()

關閉目前寫入器並釋放任何與寫入器相關聯的系統資源。

(繼承來源 TextWriter)
CreateObjRef(Type)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
Dispose()

釋放由 TextWriter 物件使用的所有資源。

(繼承來源 TextWriter)
Dispose(Boolean)

使任何緩衝資料都寫入基礎資料流,釋放 StreamWriter 所使用的非受控資源,然後選擇性地釋放受控資源。

DisposeAsync()

以非同步方式將任何緩衝資料寫入基礎資料流,並釋出 StreamWriter 使用的非受控資源。

DisposeAsync()

以非同步方式釋放由 TextWriter 物件使用的所有資源。

(繼承來源 TextWriter)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Finalize()

在記憶體回收行程回收目前 StreamWriter 的資源前,先將它的資源釋放。

Flush()

清除目前寫入器 (Writer) 的所有緩衝區,並且造成所有緩衝資料都寫入基礎資料流。

FlushAsync()

以非同步的方式清除這個資料流的所有緩衝區,並造成所有緩衝資料都寫入基礎裝置。

FlushAsync()

以非同步的方式清除目前寫入器的所有緩衝區,並造成任何緩衝資料都寫入基礎裝置。

(繼承來源 TextWriter)
FlushAsync(CancellationToken)

以非同步的方式清除這個資料流的所有緩衝區,並造成所有緩衝資料都寫入基礎裝置。

FlushAsync(CancellationToken)

以非同步的方式清除目前寫入器的所有緩衝區,並造成任何緩衝資料都寫入基礎裝置。

(繼承來源 TextWriter)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 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)

設定如何執行從非同步可處置項目傳回的工作 await。

適用於

另請參閱