BinaryReader Classe

Definizione

Legge i tipi di dati primitivi come valori binari in una determinata codifica.

public ref class BinaryReader : IDisposable
public class BinaryReader : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryReader : IDisposable
type BinaryReader = class
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryReader = class
    interface IDisposable
Public Class BinaryReader
Implements IDisposable
Ereditarietà
BinaryReader
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 BinaryReader classe fornisce metodi che semplificano la lettura dei tipi di dati primitivi da un flusso. Ad esempio, è possibile usare il ReadBoolean metodo per leggere il byte successivo come valore booleano e avanzare la posizione corrente nel flusso per un byte. La classe include metodi di lettura che supportano diversi tipi di dati.

Quando si crea una nuova istanza della BinaryReader classe, viene fornito il flusso da cui leggere e, facoltativamente, specificare il tipo di codifica e se lasciare aperto il flusso dopo aver sponito l'oggetto BinaryReader . Se non si specifica un tipo di codifica, viene usato UTF-8.

Importante

Il tipo implementa l'interfaccia IDisposable. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come 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.

Costruttori

BinaryReader(Stream)

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

BinaryReader(Stream, Encoding)

Inizializza una nuova istanza della classe BinaryReader in base alla codifica dei caratteri e del flusso specificata.

BinaryReader(Stream, Encoding, Boolean)

Inizializza una nuova istanza della classe BinaryReader in base alla codifica dei caratteri e di flusso specificati. Facoltativamente mantiene aperto il flusso.

Proprietà

BaseStream

Espone l'accesso al flusso sottostante dell'oggetto BinaryReader.

Metodi

Close()

Chiude il visualizzatore corrente e il flusso sottostante.

Dispose()

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

Dispose(Boolean)

Rilascia le risorse non gestite usate dalla classe BinaryReader e facoltativamente le risorse gestite.

Equals(Object)

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

(Ereditato da Object)
FillBuffer(Int32)

Inserisce nel buffer interno il numero specificato di byte letti dal flusso.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
PeekChar()

Restituisce il successivo carattere disponibile senza spostare in avanti la posizione del byte o del carattere.

Read()

Legge i caratteri dal flusso sottostante e sposta in avanti la posizione corrente del flusso secondo il valore Encoding usato e il carattere specifico che il flusso sta leggendo.

Read(Byte[], Int32, Int32)

Legge il numero specificato di byte dal flusso, a partire da un punto specificato nella matrice di byte.

Read(Char[], Int32, Int32)

Legge il numero specificato di caratteri dal flusso, a partire da un punto specificato nella matrice di caratteri.

Read(Span<Byte>)

Legge una sequenza di byte dal flusso corrente e fa avanzare la posizione nel flusso del numero di byte letti.

Read(Span<Char>)

Legge, a partire del flusso corrente, lo stesso numero di caratteri della lunghezza del buffer specificato, li scrive nel buffer specificato e sposta in avanti la posizione corrente in base al valore Encoding usato e il carattere specifico letto dal flusso.

Read7BitEncodedInt()

Legge un intero a 32 bit in formato compresso.

Read7BitEncodedInt64()

Legge un numero di 7 bit alla volta.

ReadBoolean()

Legge un valore Boolean dal flusso corrente e sposta in avanti di 1 byte la posizione corrente del flusso.

ReadByte()

Legge il byte successivo dal flusso corrente e sposta in avanti di 1 byte la posizione corrente del flusso.

ReadBytes(Int32)

Legge il numero specificato di byte dal flusso corrente in una matrice di byte e sposta in avanti la posizione corrente in base a tale numero di byte.

ReadChar()

Legge il carattere successivo dal flusso corrente e sposta in avanti la posizione corrente del flusso secondo il valore Encoding usato e il carattere specifico letto dal flusso.

ReadChars(Int32)

Legge il numero specificato di caratteri dal flusso corrente, restituisce i dati in una matrice di caratteri e sposta in avanti la posizione corrente secondo il valore Encoding usato e il carattere specifico letto dal flusso.

ReadDecimal()

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

ReadDouble()

Legge un valore a virgola mobile a 8 byte dal flusso corrente e sposta in avanti di otto byte la posizione corrente del flusso.

ReadHalf()

Legge un valore a virgola mobile a 2 byte dal flusso corrente e avanza la posizione corrente del flusso in due byte.

ReadInt16()

Legge un intero con segno a 2 byte dal flusso corrente e sposta in avanti di 2 byte la posizione corrente del flusso.

ReadInt32()

Legge un intero con segno a 4 byte dal flusso corrente e sposta in avanti di quattro byte la posizione corrente del flusso.

ReadInt64()

Legge un intero con segno a 8 byte dal flusso corrente e sposta in avanti di 8 byte la posizione del flusso.

ReadSByte()

Legge un byte con segno dal flusso corrente e sposta in avanti di un byte la posizione corrente del flusso.

ReadSingle()

Legge un valore a virgola mobile a 4 byte dal flusso corrente e sposta in avanti di quattro byte la posizione corrente del flusso.

ReadString()

Legge una stringa dal flusso corrente. La stringa ha un prefisso di lunghezza e viene codificata come intero, 7 bit alla volta.

ReadUInt16()

Legge un intero senza segno a 2 byte dal flusso corrente usando la codifica little-endian e sposta in avanti di due byte la posizione del flusso.

ReadUInt32()

Legge un intero senza segno a 4 byte dal flusso corrente e sposta in avanti di quattro byte la posizione del flusso.

ReadUInt64()

Legge un intero senza segno a 8 byte dal flusso corrente e sposta in avanti di otto byte la posizione del flusso.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Rilascia l'oggetto a meno che BaseStream non sia configurato in caso contrario da BinaryReader(Stream, Encoding, Boolean).

Si applica a

Vedi anche