Compartilhar via


BinaryReader Classe

Definição

Lê os tipos de dados primitivos como valores binários em uma codificação específica.

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
Herança
BinaryReader
Atributos
Implementações

Exemplos

O exemplo de código a seguir demonstra como armazenar e recuperar as configurações do aplicativo em um arquivo.

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

Comentários

A BinaryReader classe fornece métodos que simplificam a leitura de tipos de dados primitivos de um fluxo. Por exemplo, você pode usar o ReadBoolean método para ler o próximo byte como um valor booliano e avançar a posição atual no fluxo por um byte. A classe inclui métodos de leitura que dão suporte a diferentes tipos de dados.

Ao criar uma nova instância da BinaryReader classe, você fornece o fluxo para leitura e, opcionalmente, especifica o tipo de codificação e se deseja deixar o fluxo aberto depois de descartar o BinaryReader objeto. Se você não especificar um tipo de codificação, UTF-8 será usado.

Importante

Esse tipo implementa a interface IDisposable. Quando você terminar de usar o tipo, deverá descartá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame o método Dispose dele em um bloco try/catch. Para descartá-lo indiretamente, use um constructo de linguagem como using ( em C#) ou Using (em Visual Basic). Saiba mais na seção "Como usar um objeto que implementa IDisposable" no tópico da interface IDisposable.

Construtores

BinaryReader(Stream)

Inicializa uma nova instância da classe BinaryReader com base no fluxo especificado e usando a codificação UTF-8.

BinaryReader(Stream, Encoding)

Inicializa uma nova instância da classe BinaryReader com base no fluxo especificado e na codificação de caracteres.

BinaryReader(Stream, Encoding, Boolean)

Inicializa uma nova instância da classe BinaryReader com base no fluxo e na codificação de caracteres especificados e, opcionalmente, deixa o fluxo aberto.

Propriedades

BaseStream

Expõe o acesso ao fluxo subjacente do BinaryReader.

Métodos

Close()

Fecha o leitor atual e o fluxo subjacente.

Dispose()

Libera todos os recursos usados pela instância atual da classe BinaryReader.

Dispose(Boolean)

Libera os recursos não gerenciados usados pela classe BinaryReader e, opcionalmente, libera os recursos gerenciados.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
FillBuffer(Int32)

Preenche o buffer interno com o número especificado de bytes lidos do fluxo.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
PeekChar()

Retorna o próximo caractere disponível e não avance a posição do caractere ou byte.

Read()

Lê os caracteres do fluxo subjacente e avança a posição atual do fluxo de acordo com o Encoding usado e o caractere específico que está sendo lidos do fluxo.

Read(Byte[], Int32, Int32)

Lê o número especificado de bytes do fluxo, começando em um ponto especificado na matriz de bytes.

Read(Char[], Int32, Int32)

Lê o número especificado de caracteres do fluxo, começando em um ponto especificado na matriz de caracteres.

Read(Span<Byte>)

Lê uma sequência de bytes do fluxo atual e avança a posição no fluxo até o número de bytes lidos.

Read(Span<Char>)

Lê, no fluxo atual, o mesmo número de caracteres que o tamanho do buffer fornecido, grava-os no buffer fornecido e avança a posição atual de acordo com o Encoding usado e o caractere específico que está sendo lido no fluxo.

Read7BitEncodedInt()

Lê um inteiro de 32 bits em formato compactado.

Read7BitEncodedInt64()

Lê um número de 7 bits de cada vez.

ReadBoolean()

Lê um valor Boolean do fluxo atual e avança a posição atual do fluxo em um byte.

ReadByte()

Lê o próximo byte do fluxo atual e avança a posição atual do fluxo em um byte.

ReadBytes(Int32)

Lê o número especificado de bytes do fluxo atual em uma matriz de bytes e avança a posição atual pelo número de bytes.

ReadChar()

Lê o caractere seguinte do fluxo atual e avança a posição atual do fluxo de acordo com o Encoding usado e o caractere específico que está sendo lido do fluxo.

ReadChars(Int32)

Lê o número especificado de caracteres do fluxo atual, retorna os dados em uma matriz de caracteres e avança a posição atual de acordo com o Encoding usado e o caractere específico que está sendo lido no fluxo.

ReadDecimal()

Lê um valor decimal do fluxo atual e avança a posição atual do fluxo em 16 bytes.

ReadDouble()

Lê um valor de ponto flutuante de 8 bytes do fluxo atual e avança a posição atual do fluxo em oito bytes.

ReadHalf()

Lê um valor de ponto flutuante de 2 bytes do fluxo atual e avança a posição atual do fluxo em dois bytes.

ReadInt16()

Lê um inteiro com sinal de 2 bytes do fluxo atual e avança a posição atual do fluxo em dois bytes.

ReadInt32()

Lê um inteiro com sinal de 4 bytes do fluxo atual e avança a posição atual do fluxo em quatro bytes.

ReadInt64()

Lê um inteiro com sinal de oito bytes do fluxo atual e avança a posição atual do fluxo em oito bytes.

ReadSByte()

Lê um byte assinado desse fluxo e avança a posição atual do fluxo em um byte.

ReadSingle()

Lê um valor de ponto flutuante de 4 bytes do fluxo atual e avança a posição atual do fluxo em quatro bytes.

ReadString()

Lê uma cadeia de caracteres do fluxo atual. A cadeia de caracteres é prefixada com o tamanho, codificado como um inteiro, sete bits por vez.

ReadUInt16()

Lê um inteiro sem sinal de 2 bytes do fluxo atual usando a codificação little-endian e avança a posição do fluxo em dois bytes.

ReadUInt32()

Lê um inteiro sem sinal de quatro bytes do fluxo atual e avança a posição do fluxo em quatro bytes.

ReadUInt64()

Lê um inteiro sem sinal de 8 bytes do fluxo atual e avança a posição do fluxo em oito bytes.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

IDisposable.Dispose()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Libera o, BaseStream a menos que configurado de outra forma por BinaryReader(Stream, Encoding, Boolean).

Aplica-se a

Confira também