BinaryReader Classe

Definizione

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

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 di un byte. La classe include metodi di lettura che supportano tipi di dati diversi.

Quando si crea una nuova istanza della BinaryReader classe , specificare il flusso da cui leggere e, facoltativamente, specificare il tipo di codifica e se lasciare aperto il flusso dopo la eliminazione dell'oggetto BinaryReader . 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 Dispose relativo metodo in un try/catch blocco. Per eliminarlo indirettamente, usare un costrutto del linguaggio, ad using esempio (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

Nome Descrizione
BinaryReader(Stream, Encoding, Boolean)

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

BinaryReader(Stream, Encoding)

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

BinaryReader(Stream)

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

Proprietà

Nome Descrizione
BaseStream

Espone l'accesso al flusso sottostante di BinaryReader.

Metodi

Nome Descrizione
Close()

Chiude il lettore corrente e il flusso sottostante.

Dispose()

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

Dispose(Boolean)

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

Equals(Object)

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

(Ereditato da Object)
FillBuffer(Int32)

Riempie il buffer interno con il numero specificato di byte letti dal flusso.

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

Restituisce il carattere disponibile successivo e non avanza il byte o la posizione del carattere.

Read()

Legge i caratteri dal flusso sottostante e sposta in avanti la posizione corrente del flusso in base all'oggetto Encoding usato e al carattere specifico letto dal flusso.

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 sposta in avanti la posizione all'interno del flusso in base al numero di byte letti.

Read(Span<Char>)

Legge, dal flusso corrente, lo stesso numero di caratteri della lunghezza del buffer fornito, li scrive nel buffer fornito e sposta in avanti la posizione corrente in base all'oggetto Encoding usato e al carattere specifico letto dal flusso.

Read7BitEncodedInt()

Legge in un intero a 32 bit in formato compresso.

ReadBoolean()

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

ReadByte()

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

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 in base all'oggetto Encoding usato e al 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 in base all'oggetto Encoding utilizzato e al carattere specifico letto dal flusso.

ReadDecimal()

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

ReadDouble()

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

ReadInt16()

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

ReadInt32()

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

ReadInt64()

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

ReadSByte()

Legge un byte firmato da questo flusso e sposta in avanti la posizione corrente del flusso di un byte.

ReadSingle()

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

ReadString()

Legge una stringa dal flusso corrente. La stringa è preceduta dalla lunghezza, codificata come numero intero sette bit alla volta.

ReadUInt16()

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

ReadUInt32()

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

ReadUInt64()

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

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDisposable.Dispose()

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

Rilascia se BaseStream non diversamente configurato da BinaryReader(Stream, Encoding, Boolean).

Si applica a

Vedi anche