BinaryReader Klasa

Definicja

Odczytuje pierwotne typy danych jako wartości binarne w określonym kodowaniu.

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
Dziedziczenie
BinaryReader
Atrybuty
Implementuje

Przykłady

Poniższy przykład kodu demonstruje sposób przechowywania i pobierania ustawień aplikacji w pliku.

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

Uwagi

Klasa BinaryReader udostępnia metody upraszczające odczytywanie pierwotnych typów danych ze strumienia. Na przykład możesz użyć ReadBoolean metody , aby odczytać następny bajt jako wartość logiczną i przejść do bieżącej pozycji w strumieniu według jednego bajtu. Klasa zawiera metody odczytu, które obsługują różne typy danych.

Podczas tworzenia nowego wystąpienia BinaryReader klasy należy podać strumień do odczytu i opcjonalnie określić typ kodowania i czy pozostawić strumień otwarty po usunięciu BinaryReader obiektu. Jeśli nie określisz typu kodowania, używany jest kod UTF-8.

Ważne

Ten typ implementuje IDisposable interfejs. Po zakończeniu korzystania z typu należy go usunąć bezpośrednio lub pośrednio. Aby usunąć typ bezpośrednio, wywołaj metodę Dispose try/catch w bloku. Aby usunąć go pośrednio, użyj konstrukcji językowej, takiej jak using (w języku C#) lub Using (w Visual Basic). Aby uzyskać więcej informacji, zobacz sekcję "Using an Object that Implements IDisposable" (Używanie obiektu implementujące protokół IDisposable) w temacie interfejsu IDisposable .

Konstruktory

BinaryReader(Stream)

Inicjuje nowe wystąpienie klasy na podstawie określonego BinaryReader strumienia i przy użyciu kodowania UTF-8.

BinaryReader(Stream, Encoding)

Inicjuje BinaryReader nowe wystąpienie klasy na podstawie określonego strumienia i kodowania znaków.

BinaryReader(Stream, Encoding, Boolean)

Inicjuje BinaryReader nowe wystąpienie klasy na podstawie określonego strumienia i kodowania znaków, a opcjonalnie pozostawia otwarty strumień.

Właściwości

BaseStream

Uwidacznia dostęp do bazowego strumienia elementu BinaryReader.

Metody

Close()

Zamyka bieżący czytnik i źródłowy strumień.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy BinaryReader.

Dispose(Boolean)

Zwalnia niezarządzane zasoby używane przez klasę BinaryReader i opcjonalnie zwalnia zarządzane zasoby.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
FillBuffer(Int32)

Wypełnia bufor wewnętrzny określoną liczbą bajtów odczytanych ze strumienia.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
PeekChar()

Zwraca następny dostępny znak i nie zwiększa położenia bajtu ani znaku.

Read()

Odczytuje znaki ze strumienia bazowego i rozwija bieżącą pozycję strumienia zgodnie z Encoding używanym i określonym znakiem odczytywanym ze strumienia.

Read(Byte[], Int32, Int32)

Odczytuje określoną liczbę bajtów ze strumienia, począwszy od określonego punktu w tablicy bajtów.

Read(Char[], Int32, Int32)

Odczytuje określoną liczbę znaków ze strumienia, zaczynając od określonego punktu w tablicy znaków.

Read(Span<Byte>)

Odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

Read(Span<Char>)

Odczytuje z bieżącego strumienia taką samą liczbę znaków, jak długość dostarczonego buforu, zapisuje je w podanym buforze i rozwija bieżącą pozycję zgodnie z Encoding używanym i określonym znakiem odczytanym ze strumienia.

Read7BitEncodedInt()

Odczytuje w 32-bitowej liczbą całkowitą w formacie skompresowanym.

Read7BitEncodedInt64()

Odczytuje liczbę 7 bitów naraz.

ReadBoolean()

Odczytuje Boolean wartość z bieżącego strumienia i przesuwa bieżącą pozycję strumienia o jeden bajt.

ReadByte()

Odczytuje następny bajt z bieżącego strumienia i rozwija bieżącą pozycję strumienia według jednego bajtu.

ReadBytes(Int32)

Odczytuje określoną liczbę bajtów z bieżącego strumienia do tablicy bajtów i zwiększa bieżącą pozycję o określoną liczbę bajtów.

ReadChar()

Odczytuje następny znak z bieżącego strumienia i rozwija bieżącą pozycję strumienia zgodnie z Encoding używanym i określonym znakiem odczytywanym ze strumienia.

ReadChars(Int32)

Odczytuje określoną liczbę znaków z bieżącego strumienia, zwraca dane w tablicy znaków i rozwija bieżącą pozycję zgodnie z Encoding używanym i określonym znakiem odczytywanym ze strumienia.

ReadDecimal()

Odczytuje wartość dziesiętną z bieżącego strumienia i rozwija bieżącą pozycję strumienia o szesnaście bajtów.

ReadDouble()

Odczytuje wartość zmiennoprzecinkową 8-bajtową z bieżącego strumienia i rozwija bieżącą pozycję strumienia o osiem bajtów.

ReadHalf()

Odczytuje wartość zmiennoprzecinkową 2-bajtową z bieżącego strumienia i rozwija bieżącą pozycję strumienia według dwóch bajtów.

ReadInt16()

Odczytuje liczbę całkowitą ze znakiem 2 bajtów z bieżącego strumienia i rozwija bieżącą pozycję strumienia według dwóch bajtów.

ReadInt32()

Odczytuje 4-bajtową liczbę całkowitą podpisaną z bieżącego strumienia i rozwija bieżącą pozycję strumienia o cztery bajty.

ReadInt64()

Odczytuje liczbę całkowitą z podpisem 8 bajtów z bieżącego strumienia i przechodzi bieżącą pozycję strumienia o osiem bajtów.

ReadSByte()

Odczytuje podpisany bajt z tego strumienia i rozwija bieżącą pozycję strumienia według jednego bajtu.

ReadSingle()

Odczytuje wartość zmiennoprzecinkową 4-bajtową z bieżącego strumienia i rozwija bieżącą pozycję strumienia o cztery bajty.

ReadString()

Odczytuje ciąg z bieżącego strumienia. Ciąg jest poprzedzony długością zakodowaną jako liczba całkowita siedem bitów jednocześnie.

ReadUInt16()

Odczytuje niepodpisaną liczbę całkowitą 2 bajtów z bieżącego strumienia przy użyciu kodowania mało endianowego i zwiększa położenie strumienia o dwa bajty.

ReadUInt32()

Odczytuje 4-bajtową niepodpisaną liczbę całkowitą z bieżącego strumienia i rozwija pozycję strumienia o cztery bajty.

ReadUInt64()

Odczytuje liczbę całkowitą bez znaku 8 bajtów z bieżącego strumienia i rozwija pozycję strumienia o osiem bajtów.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IDisposable.Dispose()

Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu.

Zwalnia element , BaseStream chyba że został skonfigurowany w inny sposób przez .BinaryReader(Stream, Encoding, Boolean)

Dotyczy

Zobacz też