共用方式為


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 的物件>一節。

除非另有指定,否則 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所使用的 Unmanaged 資源,以及選擇性地釋放 Managed 資源。

DisposeAsync()

以異步方式將任何緩衝的數據寫入基礎數據流,並釋放 StreamWriter所使用的 Unmanaged 資源。

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

設定如何執行從異步可處置專案傳回的工作等候。

適用於

另請參閱