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 typów danych pierwotnych ze strumienia. Możesz na przykład 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 strumień ma pozostać otwarty po usunięciu BinaryReader obiektu. Jeśli nie określisz typu kodowania, jest używany kodowanie UTF-8.

Ważne

Ten typ implementuje IDisposable interfejs. Po zakończeniu korzystania z typu należy usunąć go bezpośrednio lub pośrednio. Aby bezpośrednio usunąć typ, wywołaj jego Dispose metodę try/catch w bloku. Aby usunąć go pośrednio, użyj konstrukcji języka, 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 interfejs IDisposable) w temacie interfejsu IDisposable .

Konstruktory

BinaryReader(Stream)

Inicjuje BinaryReader nowe wystąpienie klasy na podstawie określonego strumienia i używa 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 strumień otwarty.

Właściwości

BaseStream

Uwidacznia dostęp do bazowego strumienia obiektu BinaryReader.

Metody

Close()

Zamyka bieżący czytnik i bazowy 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 przechodzi bieżącą pozycję strumienia o jeden bajt.

ReadBytes(Int32)

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

ReadChar()

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

ReadChars(Int32)

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

ReadDecimal()

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

ReadDouble()

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

ReadHalf()

Odczytuje 2-bajtową wartość zmiennoprzecinkową z bieżącego strumienia i przechodzi bieżącą pozycję strumienia o dwa bajty.

ReadInt16()

Odczytuje 2-bajtową liczbę całkowitą ze znakiem z bieżącego strumienia i przechodzi bieżącą pozycję strumienia o dwa bajty.

ReadInt32()

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

ReadInt64()

Odczytuje 8-bajtową liczbę całkowitą ze znakiem 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 4-bajtową wartość zmiennoprzecinkową 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 2-bajtową liczbę całkowitą bez znaku z bieżącego strumienia przy użyciu kodowania little-endian i zwiększa położenie strumienia o dwa bajty.

ReadUInt32()

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

ReadUInt64()

Odczytuje 8-bajtową liczbę całkowitą bez znaku 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 inaczej przez program BinaryReader(Stream, Encoding, Boolean).

Dotyczy

Zobacz też