Číst v angličtině

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

Produkt Verze
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Viz také