BinaryWriter 類別

定義

以二進位方式將基本類型寫入資料流,並支援以特定編碼方式寫入字串。

public ref class BinaryWriter : IDisposable
public ref class BinaryWriter : IAsyncDisposable, IDisposable
public class BinaryWriter : IDisposable
public class BinaryWriter : IAsyncDisposable, IDisposable
[System.Serializable]
public class BinaryWriter : IDisposable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryWriter : IDisposable
type BinaryWriter = class
    interface IDisposable
type BinaryWriter = class
    interface IAsyncDisposable
    interface IDisposable
[<System.Serializable>]
type BinaryWriter = class
    interface IDisposable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryWriter = class
    interface IDisposable
Public Class BinaryWriter
Implements IDisposable
Public Class BinaryWriter
Implements IAsyncDisposable, IDisposable
繼承
BinaryWriter
屬性
實作

範例

下列程式代碼範例示範如何在檔案中儲存和擷取應用程式設定。

using System;
using System.IO;
using System.Text;

class ConsoleApplication
{
    const string fileName = "AppSettings.dat";

    static void Main()
    {
        WriteDefaultValues();
        DisplayValues();
    }

    public static void WriteDefaultValues()
    {
        using (var stream = File.Open(fileName, FileMode.Create))
        {
            using (var writer = new BinaryWriter(stream, Encoding.UTF8, false))
            {
                writer.Write(1.250F);
                writer.Write(@"c:\Temp");
                writer.Write(10);
                writer.Write(true);
            }
        }
    }

    public static void DisplayValues()
    {
        float aspectRatio;
        string tempDirectory;
        int autoSaveTime;
        bool showStatusBar;

        if (File.Exists(fileName))
        {
            using (var stream = File.Open(fileName, FileMode.Open))
            {
                using (var reader = new BinaryReader(stream, Encoding.UTF8, false))
                {
                    aspectRatio = reader.ReadSingle();
                    tempDirectory = reader.ReadString();
                    autoSaveTime = reader.ReadInt32();
                    showStatusBar = reader.ReadBoolean();
                }
            }

            Console.WriteLine("Aspect ratio set to: " + aspectRatio);
            Console.WriteLine("Temp directory is: " + tempDirectory);
            Console.WriteLine("Auto save time set to: " + autoSaveTime);
            Console.WriteLine("Show status bar: " + showStatusBar);
        }
    }
}
open System.IO
open System.Text

let fileName = "AppSettings.dat"

let writeDefaultValues () =
    use stream = File.Open(fileName, FileMode.Create)
    use writer = new BinaryWriter(stream, Encoding.UTF8, false)
    writer.Write 1.250F
    writer.Write @"c:\Temp"
    writer.Write 10
    writer.Write true

let displayValues () =
    if File.Exists fileName then
        use stream = File.Open(fileName, FileMode.Open)
        use reader = new BinaryReader(stream, Encoding.UTF8, false)
        let aspectRatio = reader.ReadSingle()
        let tempDirectory = reader.ReadString()
        let autoSaveTime = reader.ReadInt32()
        let showStatusBar = reader.ReadBoolean()

        printfn $"Aspect ratio set to: {aspectRatio}"
        printfn $"Temp directory is: {tempDirectory}"
        printfn $"Auto save time set to: {autoSaveTime}"
        printfn $"Show status bar: {showStatusBar}"

writeDefaultValues ()
displayValues ()
Imports System.IO

Module Module1
    Const fileName As String = "AppSettings.dat"

    Sub Main()
        WriteDefaultValues()
        DisplayValues()
    End Sub

    Sub WriteDefaultValues()
        Using writer As BinaryWriter = New BinaryWriter(File.Open(fileName, FileMode.Create))
            writer.Write(1.25F)
            writer.Write("c:\Temp")
            writer.Write(10)
            writer.Write(True)
        End Using
    End Sub

    Sub DisplayValues()
        Dim aspectRatio As Single
        Dim tempDirectory As String
        Dim autoSaveTime As Integer
        Dim showStatusBar As Boolean

        If (File.Exists(fileName)) Then

            Using reader As BinaryReader = New BinaryReader(File.Open(fileName, FileMode.Open))
                aspectRatio = reader.ReadSingle()
                tempDirectory = reader.ReadString()
                autoSaveTime = reader.ReadInt32()
                showStatusBar = reader.ReadBoolean()
            End Using

            Console.WriteLine("Aspect ratio set to: " & aspectRatio)
            Console.WriteLine("Temp directory is: " & tempDirectory)
            Console.WriteLine("Auto save time set to: " & autoSaveTime)
            Console.WriteLine("Show status bar: " & showStatusBar)
        End If
    End Sub

End Module

備註

類別 BinaryWriter 提供可簡化將基本數據類型寫入數據流的方法。 例如,您可以使用 Write 方法,將布爾值寫入數據流做為一個字節值。 類別包含支援不同數據類型的寫入方法。

當您建立 類別的新實例 BinaryWriter 時,您會提供要寫入的數據流,並選擇性地指定編碼類型,以及是否要在處置 BinaryWriter 對象之後讓數據流保持開啟。 如果您未指定編碼類型,則會使用UTF-8。

重要

此型別代表 IDisposable 介面。 當您完成使用型別時,您應該直接或間接處置它。 若要直接處置型別,請呼叫其 try/catch 區塊中的 Dispose 方法。 若要間接處置它,請使用語言建構函式,例如 using (在 C# 中) 或 Using (在 Visual Basic 中)。 如需詳細資訊,請參閱 IDisposable 介面文章中的<使用實作 IDisposable 的物件>一節。

衍生類別可以覆寫這個類別的方法,以提供唯一字元編碼。

建構函式

BinaryWriter()

初始化 BinaryWriter 類別的新執行個體,其將寫入資料流。

BinaryWriter(Stream)

根據指定的資料流並使用 UTF-8 編碼方式,初始化 BinaryWriter 類別的新執行個體。

BinaryWriter(Stream, Encoding)

根據指定的資料流和字元編碼,初始化 BinaryWriter 類別的新執行個體。

BinaryWriter(Stream, Encoding, Boolean)

根據指定的資料流和特定的字元編碼,初始化 BinaryWriter 類別的新執行個體,並選擇性地保留資料流開啟狀態。

欄位

Null

指定沒有備份存放區的 BinaryWriter

OutStream

容納基礎資料流。

屬性

BaseStream

取得 BinaryWriter 的基礎資料流。

方法

Close()

關閉目前的 BinaryWriter 和基礎資料流。

Dispose()

釋放 BinaryWriter 類別目前的執行個體所使用的全部資源。

Dispose(Boolean)

釋放 BinaryWriter 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

DisposeAsync()

以非同步方式將 BinaryWriter 類別的目前執行個體所使用所有資源釋出。

Equals(Object)

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

(繼承來源 Object)
Flush()

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

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
Seek(Int32, SeekOrigin)

設定目前資料流位置。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
Write(Boolean)

寫入一位元組的 Boolean 值至目前資料流,其中 0 表示 false,1 表示 true

Write(Byte)

將不帶正負號 (Unsigned) 位元組寫入目前資料流,並將資料流位置前移一個位元組。

Write(Byte[])

將位元組陣列寫入基礎資料流。

Write(Byte[], Int32, Int32)

將一個區域的位元組陣列寫入目前資料流。

Write(Char)

將 Unicode 字元寫入至目前資料流,並按照所使用的 Encoding 和寫入資料流的特定字元,將資料流中目前的位置往前移。

Write(Char[])

將字元陣列寫入至目前資料流,並按照所使用的 Encoding 和寫入資料流的特定字元,將資料流中目前的位置往前移。

Write(Char[], Int32, Int32)

將字元陣列中的一區段寫入至目前的資料流,並按照所使用的 Encoding 和可能為寫入資料流的特定字元,將資料流中目前的位置往前移。

Write(Decimal)

將十進位值寫入目前的資料流,並將資料流位置往前移十六個位元組。

Write(Double)

將八位元組浮點數值寫入目前資料流,並將資料流目前位置前移八個位元組。

Write(Half)

將雙位元組浮點數寫入目前的數據流,並將數據流位置往前移兩個字節。

Write(Int16)

將二位元組帶正負號的整數 (Signed Integer) 寫入目前資料流,並將資料流目前位置前移兩個位元組。

Write(Int32)

將四位元組帶正負號的整數寫入目前資料流,並將資料流目前位置前移四個位元組。

Write(Int64)

將八位元組帶正負號的整數寫入目前資料流,並將資料流目前位置前移八個位元組。

Write(ReadOnlySpan<Byte>)

將位元組範圍寫入目前的資料流。

Write(ReadOnlySpan<Char>)

將字元範圍寫入目前的資料流,並按照所使用的 Encoding 和可能為寫入資料流的特定字元,將資料流中目前的位置往前移。

Write(SByte)

將帶正負號 (Signed) 位元組寫入目前資料流,並將資料流位置前移一個位元組。

Write(Single)

將四位元組浮點數 (Floating-Point) 值寫入目前資料流,並將資料流目前位置前移四個位元組。

Write(String)

將有長度前置字元的字串以目前 BinaryWriter 的編碼方式寫入此資料流,並按照所使用的編碼方式和寫入資料流的特定字元,將資料流中目前的位置往前移。

Write(UInt16)

將二位元組不帶正負號的整數寫入目前資料流,並將資料流目前位置前移兩個位元組。

Write(UInt32)

將四位元組不帶正負號的整數寫入目前資料流,並將資料流目前位置前移四個位元組。

Write(UInt64)

將八位元組不帶正負號的整數值寫入目前資料流,並將資料流目前位置前移八個位元組。

Write7BitEncodedInt(Int32)

以壓縮格式寫入 32 位元整數。

Write7BitEncodedInt64(Int64)

一次寫出 7 位數字。

明確介面實作

IDisposable.Dispose()

釋放 BinaryWriter 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

擴充方法

ConfigureAwait(IAsyncDisposable, Boolean)

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

適用於

另請參閱