Condividi tramite


BinaryWriter Classe

Definizione

Scrive i tipi primitivi in un flusso binario e supporta la scrittura di stringhe in una codifica specifica.

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
Ereditarietà
BinaryWriter
Attributi
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come archiviare e recuperare le impostazioni dell'applicazione in un file.

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

Commenti

La classe BinaryWriter fornisce metodi che semplificano la scrittura di tipi di dati primitivi in un flusso. Ad esempio, è possibile usare il metodo Write per scrivere un valore booleano nel flusso come valore a un byte. La classe include metodi di scrittura che supportano tipi di dati diversi.

Quando si crea una nuova istanza della classe BinaryWriter, si specifica il flusso in cui scrivere e, facoltativamente, si specifica il tipo di codifica e se lasciare aperto il flusso dopo aver smesso di eliminare l'oggetto BinaryWriter. Se non si specifica un tipo di codifica, viene usato UTF-8.

Importante

Questo tipo implementa l'interfaccia IDisposable. Al termine dell'uso del tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, usare un costrutto del linguaggio, ad esempio using (in C#) o Using (in Visual Basic). Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable.

Una classe derivata può eseguire l'override dei metodi di questa classe per assegnare codifiche di caratteri univoche.

Costruttori

BinaryWriter()

Inizializza una nuova istanza della classe BinaryWriter che scrive in un flusso.

BinaryWriter(Stream)

Inizializza una nuova istanza della classe BinaryWriter in base al flusso specificato e usa la codifica UTF-8.

BinaryWriter(Stream, Encoding)

Inizializza una nuova istanza della classe BinaryWriter in base al flusso e alla codifica dei caratteri specificati.

BinaryWriter(Stream, Encoding, Boolean)

Inizializza una nuova istanza della classe BinaryWriter in base al flusso e alla codifica dei caratteri specificati e, facoltativamente, lascia aperto il flusso.

Campi

Null

Specifica un BinaryWriter senza archivio di backup.

OutStream

Contiene il flusso sottostante.

Proprietà

BaseStream

Ottiene il flusso sottostante del BinaryWriter.

Metodi

Close()

Chiude il BinaryWriter corrente e il flusso sottostante.

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della classe BinaryWriter.

Dispose(Boolean)

Rilascia le risorse non gestite usate dal BinaryWriter e, facoltativamente, rilascia le risorse gestite.

DisposeAsync()

Rilascia in modo asincrono tutte le risorse usate dall'istanza corrente della classe BinaryWriter.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Flush()

Cancella tutti i buffer per il writer corrente e determina la scrittura di tutti i dati memorizzati nel buffer nel dispositivo sottostante.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
Seek(Int32, SeekOrigin)

Imposta la posizione all'interno del flusso corrente.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
Write(Boolean)

Scrive un valore di Boolean a un byte nel flusso corrente, con 0 che rappresenta false e 1 che rappresenta true.

Write(Byte)

Scrive un byte senza segno nel flusso corrente e sposta in avanti di un byte la posizione del flusso.

Write(Byte[])

Scrive una matrice di byte nel flusso sottostante.

Write(Byte[], Int32, Int32)

Scrive un'area di una matrice di byte nel flusso corrente.

Write(Char)

Scrive un carattere Unicode nel flusso corrente e sposta in avanti la posizione corrente del flusso in base alle Encoding usate e ai caratteri specifici scritti nel flusso.

Write(Char[])

Scrive una matrice di caratteri nel flusso corrente e sposta in avanti la posizione corrente del flusso in base alla Encoding usata e ai caratteri specifici scritti nel flusso.

Write(Char[], Int32, Int32)

Scrive una sezione di una matrice di caratteri nel flusso corrente e sposta in avanti la posizione corrente del flusso in base alla Encoding usata e forse ai caratteri specifici scritti nel flusso.

Write(Decimal)

Scrive un valore decimale nel flusso corrente e sposta in avanti di sedici byte la posizione del flusso.

Write(Double)

Scrive un valore a virgola mobile a otto byte nel flusso corrente e sposta in avanti la posizione del flusso di otto byte.

Write(Half)

Scrive un valore a virgola mobile a due byte nel flusso corrente e sposta in avanti la posizione del flusso di due byte.

Write(Int16)

Scrive un intero con segno a due byte nel flusso corrente e sposta in avanti la posizione del flusso di due byte.

Write(Int32)

Scrive un intero con segno a quattro byte nel flusso corrente e sposta in avanti la posizione del flusso di quattro byte.

Write(Int64)

Scrive un intero con segno a otto byte nel flusso corrente e sposta in avanti la posizione del flusso di otto byte.

Write(ReadOnlySpan<Byte>)

Scrive un intervallo di byte nel flusso corrente.

Write(ReadOnlySpan<Char>)

Scrive un intervallo di caratteri nel flusso corrente e sposta in avanti la posizione corrente del flusso in base al Encoding usato e forse ai caratteri specifici scritti nel flusso.

Write(SByte)

Scrive un byte firmato nel flusso corrente e sposta in avanti la posizione del flusso di un byte.

Write(Single)

Scrive un valore a virgola mobile a quattro byte nel flusso corrente e sposta in avanti la posizione del flusso di quattro byte.

Write(String)

Scrive una stringa con prefisso di lunghezza in questo flusso nella codifica corrente del BinaryWritere sposta in avanti la posizione corrente del flusso in base alla codifica usata e ai caratteri specifici scritti nel flusso.

Write(UInt16)

Scrive un intero senza segno a due byte nel flusso corrente e sposta in avanti la posizione del flusso di due byte.

Write(UInt32)

Scrive un intero senza segno a quattro byte nel flusso corrente e sposta in avanti la posizione del flusso di quattro byte.

Write(UInt64)

Scrive un intero senza segno a otto byte nel flusso corrente e sposta in avanti la posizione del flusso di otto byte.

Write7BitEncodedInt(Int32)

Scrive un intero a 32 bit in un formato compresso.

Write7BitEncodedInt64(Int64)

Scrive un numero di 7 bit alla volta.

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Rilascia le risorse non gestite usate dal BinaryWriter e, facoltativamente, rilascia le risorse gestite.

Metodi di estensione

ConfigureAwait(IAsyncDisposable, Boolean)

Configura il modo in cui verranno eseguite le attese nelle attività restituite da un oggetto eliminabile asincrono.

Si applica a

Vedi anche