BinaryReader Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 |
| 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 |
| Read7BitEncodedInt() |
Odczytuje w 32-bitowej liczbą całkowitą w formacie skompresowanym. |
| Read7BitEncodedInt64() |
Odczytuje liczbę 7 bitów naraz. |
| ReadBoolean() |
Odczytuje |
| 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 |
| 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 |
| 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). |