Sdílet prostřednictvím


BinaryReader Třída

Definice

Čte primitivní datové typy jako binární hodnoty v konkrétním kódování.

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
Dědičnost
BinaryReader
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje, jak uložit a načíst nastavení aplikace v souboru.

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

Poznámky

Třída BinaryReader poskytuje metody, které zjednodušují čtení primitivních datových typů ze streamu. Pomocí metody můžete ReadBoolean například přečíst další bajt jako logickou hodnotu a posunout aktuální pozici v datovém proudu o jeden bajt. Třída zahrnuje metody čtení, které podporují různé datové typy.

Když vytvoříte novou instanci BinaryReader třídy, zadáte datový proud, ze který se má číst, a volitelně určíte typ kódování a zda se má datový proud nechat otevřený po odstranění objektu BinaryReader . Pokud nezadáte typ kódování, použije se UTF-8.

Důležité

Tento typ implementuje IDisposable rozhraní. Po dokončení používání tohoto typu byste ho měli přímo nebo nepřímo odstranit. Pokud chcete odstranit typ přímo, zavolejte jeho Dispose metodu try/catch v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, například using (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.

Konstruktory

BinaryReader(Stream)

Inicializuje novou instanci BinaryReader třídy na základě zadaného datového proudu a pomocí kódování UTF-8.

BinaryReader(Stream, Encoding)

Inicializuje novou instanci BinaryReader třídy na základě zadaného datového proudu a kódování znaků.

BinaryReader(Stream, Encoding, Boolean)

Inicializuje novou instanci třídy na základě zadaného datového BinaryReader proudu a kódování znaků a volitelně ponechá datový proud otevřený.

Vlastnosti

BaseStream

Zpřístupňuje přístup k podkladovému datovému proudu objektu BinaryReader.

Metody

Close()

Zavře aktuálního čtenáře a podkladový datový proud.

Dispose()

Uvolní všechny prostředky používané aktuální instancí BinaryReader třídy.

Dispose(Boolean)

Uvolní nespravované prostředky používané BinaryReader třídou a volitelně uvolní spravované prostředky.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
FillBuffer(Int32)

Vyplní vnitřní vyrovnávací paměť zadaným počtem bajtů načtených z datového proudu.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
PeekChar()

Vrátí další dostupný znak a neposoudí bajt ani pozici znaku.

Read()

Přečte znaky z podkladového datového proudu a posune aktuální pozici datového proudu v souladu s použitým Encoding a konkrétním znakem, který se z datového proudu čte.

Read(Byte[], Int32, Int32)

Přečte zadaný počet bajtů z datového proudu, počínaje zadaným bodem v bajtovém poli.

Read(Char[], Int32, Int32)

Přečte zadaný počet znaků z datového proudu, počínaje zadaným bodem v poli znaků.

Read(Span<Byte>)

Přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v rámci streamu o počet přečtených bajtů.

Read(Span<Char>)

Přečte z aktuálního datového proudu stejný počet znaků jako délka poskytnuté vyrovnávací paměti, zapíše je do poskytnuté vyrovnávací paměti a posune aktuální pozici podle použitého Encoding a konkrétního znaku, který se z datového proudu čte.

Read7BitEncodedInt()

Čte v 32bitovém celočíselném formátu v komprimovaném formátu.

Read7BitEncodedInt64()

Přečte číslo 7 bitů najednou.

ReadBoolean()

Načte Boolean hodnotu z aktuálního datového proudu a posune aktuální pozici datového proudu o jeden bajt.

ReadByte()

Přečte další bajt z aktuálního datového proudu a posune aktuální pozici streamu o jeden bajt.

ReadBytes(Int32)

Přečte zadaný počet bajtů z aktuálního datového proudu do pole bajtů a posune aktuální pozici o tento počet bajtů.

ReadChar()

Přečte další znak z aktuálního datového proudu a posune aktuální pozici datového proudu v souladu s použitým Encoding a konkrétním znakem, který se z datového proudu čte.

ReadChars(Int32)

Přečte zadaný počet znaků z aktuálního datového proudu, vrátí data v poli znaků a posune aktuální pozici v souladu s použitým Encoding a konkrétním znakem, který se čte z datového proudu.

ReadDecimal()

Načte desetinnou hodnotu z aktuálního datového proudu a posune aktuální pozici datového proudu o šestnáct bajtů.

ReadDouble()

Načte hodnotu s plovoucí desetinou čárkou o 8 bajtů z aktuálního datového proudu a posune aktuální pozici datového proudu o osm bajtů.

ReadHalf()

Načte hodnotu s plovoucí desetinou čárkou o 2 bajty z aktuálního datového proudu a posune aktuální pozici datového proudu o dva bajty.

ReadInt16()

Načte celé číslo se 2 bajty z aktuálního datového proudu a posune aktuální pozici datového proudu o dva bajty.

ReadInt32()

Přečte celé číslo se 4 bajty z aktuálního datového proudu a posune aktuální pozici datového proudu o čtyři bajty.

ReadInt64()

Načte celé číslo se 8 bajty z aktuálního datového proudu a posune aktuální pozici datového proudu o osm bajtů.

ReadSByte()

Přečte podepsaný bajt z tohoto datového proudu a posune aktuální pozici streamu o jeden bajt.

ReadSingle()

Načte hodnotu s plovoucí desetinou čárkou o 4 bajty z aktuálního datového proudu a posune aktuální pozici datového proudu o čtyři bajty.

ReadString()

Přečte řetězec z aktuálního datového proudu. Řetězec má předponu s délkou, zakódovanou jako celé číslo sedm bitů najednou.

ReadUInt16()

Načte 2 bajtové celé číslo bez znaménka z aktuálního datového proudu pomocí kódování little-endian a posune pozici datového proudu o dva bajty.

ReadUInt32()

Přečte 4 bajtové celé číslo bez znaménka z aktuálního datového proudu a posune pozici datového proudu o čtyři bajty.

ReadUInt64()

Přečte celé číslo bez znaménka o 8 bajtů z aktuálního datového proudu a posune pozici datového proudu o osm bajtů.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

IDisposable.Dispose()

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Uvolní, BaseStream pokud není nakonfigurováno jinak pomocí BinaryReader(Stream, Encoding, Boolean).

Platí pro

Viz také