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。

Important

此類型會實作 IDisposable 介面。 當您完成使用這個物品後,應直接或間接地處理它。 若要直接處置類型,請在 Disposetry/ 區塊中呼叫其 catch 方法。 若要間接處置它,請使用語言建構,例如 using (C#) 或 Using (在 Visual Basic 中)。 如需詳細資訊,請參閱介面主題中的 <使用實作 IDisposable 的物件>一節。

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

建構函式

名稱 Description
BinaryWriter()

初始化一個寫入串流的類別新實例 BinaryWriter

BinaryWriter(Stream, Encoding, Boolean)

根據指定的串流與字元編碼初始化該類別的新實例 BinaryWriter ,並可選擇性地保持串流開啟。

BinaryWriter(Stream, Encoding)

根據指定的串流與字元編碼初始化該類別的新實例 BinaryWriter

BinaryWriter(Stream)

根據指定的串流並使用 UTF-8 編碼,初始化該 BinaryWriter 類別的新實例。

欄位

名稱 Description
Null

指定一個 BinaryWriter 沒有備份的商店。

OutStream

保持底層的流。

屬性

名稱 Description
BaseStream

得到 的底層流。BinaryWriter

方法

名稱 Description
Close()

關閉電流 BinaryWriter 和底層的水流。

Dispose()

釋放目前類別實例 BinaryWriter 所使用的所有資源。

Dispose(Boolean)

釋放 未管理的資源, BinaryWriter 並可選擇性地釋放受管理資源。

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)

寫入一個未簽名的位元組到目前串流,並將串流位置往前推進一個位元組。

Write(Byte[], Int32, Int32)

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

Write(Byte[])

將一個位元組陣列寫入底層串流。

Write(Char)

會將 Unicode 字元寫入目前串流,並根據所用及特定字元推進串流的 Encoding 當前位置。

Write(Char[], Int32, Int32)

將字元陣列的一個區段寫入目前串流,並根據所用或特定字元,推進串流 Encoding 的當前位置。

Write(Char[])

將字元陣列寫入目前串流,並根據所用及特定字元推進串流的 Encoding 當前位置。

Write(Decimal)

將小數值寫入目前串流,並將串流位置前進十六位元組。

Write(Double)

將一個八位元組的浮點數寫入目前串流,並將串流位置往前推進八個位元組。

Write(Half)

將兩個位元組的浮點數寫入目前串流,並將串流位置前進兩個位元組。

Write(Int16)

將一個兩位元組的有符號整數寫入目前串流,並將串流位置向前推進兩個位元組。

Write(Int32)

寫入一個四位元組的有符號整數到目前串流,並將串流位置前進四個位元組。

Write(Int64)

將一個八位元組的有符號整數寫入目前串流,並將串流位置前進八位元組。

Write(ReadOnlySpan<Byte>)

將一段位元組寫入當前串流。

Write(ReadOnlySpan<Char>)

將一組字元寫入當前串流,並根據所用及可能的特定字元,推進串流 Encoding 的當前位置。

Write(SByte)

寫入一個有簽名的位元組到目前串流,並將串流位置往前推進一個位元組。

Write(Single)

將一個四位元組的浮點數寫入目前串流,並將串流位置前進四個位元組。

Write(String)

以目前 BinaryWriter編碼的編碼寫入一個長度前綴字串,並依據所用編碼及寫入串流的特定字元,推進串流的當前位置。

Write(UInt16)

將一個兩位元組的無符號整數寫入目前串流,並將串流位置前進兩個位元組。

Write(UInt32)

將一個四位元組的無符號整數寫入目前串流,並將串流位置前進四個位元組。

Write(UInt64)

將一個八位元組的無符號整數寫入當前串流,並將串流位置前進八位元組。

Write7BitEncodedInt(Int32)

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

Write7BitEncodedInt64(Int64)

一次寫出一個數字 7 位元。

明確介面實作

名稱 Description
IDisposable.Dispose()

釋放 未管理的資源, BinaryWriter 並可選擇性地釋放受管理資源。

擴充方法

名稱 Description
ConfigureAwait(IAsyncDisposable, Boolean)

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

適用於

另請參閱