BinaryReader Classe

Definição

Lê tipos de dados primitivos como valores binários numa 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 seguinte demonstra como armazenar e recuperar definições de aplicação num ficheiro.

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

Observações

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

Quando crias uma nova instância da BinaryReader classe, forneces o fluxo para ler e, opcionalmente, especificas o tipo de codificação e se deves deixar o fluxo aberto após eliminares o BinaryReader objeto. Se não especificar um tipo de codificação, utiliza-se UTF-8.

Importante

Este tipo implementa a interface IDisposable. Quando terminar de usar o tipo, você deve eliminá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame seu método Dispose em um bloco try/catch. Para descartá-lo indiretamente, use uma construção de linguagem como using (em C#) ou Using (em Visual Basic). Para obter mais informações, consulte a seção "Usando um objeto que implementa IDisposable" no tópico da IDisposable interface.

Construtores

Name Description
BinaryReader(Stream, Encoding, Boolean)

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

BinaryReader(Stream, Encoding)

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

BinaryReader(Stream)

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

Propriedades

Name Description
BaseStream

Expõe o acesso ao fluxo subjacente do BinaryReader.

Métodos

Name Description
Close()

Fecha o leitor atual e o fluxo subjacente.

Dispose()

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

Dispose(Boolean)

Liberta os recursos não geridos usados pela BinaryReader classe e, opcionalmente, liberta os recursos geridos.

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 função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
PeekChar()

Devolve o próximo carácter disponível e não avança o byte ou a posição do caractere.

Read()

Lê caracteres do fluxo subjacente e avança a posição atual do fluxo de acordo com o Encoding utilizado e o carácter específico que está a ser lido do fluxo.

Read(Byte[], Int32, Int32)

Lê o número especificado de bytes do fluxo, começando a partir de um ponto especificado no array de bytes.

Read(Char[], Int32, Int32)

Lê o número especificado de caracteres do fluxo, começando a partir de um ponto especificado no array de caracteres.

Read(Span<Byte>)

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

Read(Span<Char>)

Lê, a partir do fluxo atual, o mesmo número de caracteres que o comprimento do buffer fornecido, escreve-os no buffer fornecido e avança a posição atual de acordo com o Encoding usado e o carácter específico que está a ser lido do fluxo.

Read7BitEncodedInt()

Lê num inteiro de 32 bits em formato comprimido.

ReadBoolean()

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

ReadByte()

Lê o byte seguinte 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 para um array de bytes e avança a posição atual nesse número de bytes.

ReadChar()

Lê o próximo carácter do fluxo atual e avança a posição atual do fluxo de acordo com o Encoding utilizado e o carácter específico que está a ser lido do fluxo.

ReadChars(Int32)

Lê o número especificado de caracteres do fluxo atual, devolve os dados num array de caracteres e avança a posição atual de acordo com o Encoding utilizado e o carácter específico que está a ser lido do fluxo.

ReadDecimal()

Lê um valor decimal do fluxo atual e avança a posição atual do fluxo em dezasseis 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.

ReadInt16()

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

ReadInt32()

Lê um inteiro assinado 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 8 bytes do fluxo atual e avança a posição atual do fluxo em oito bytes.

ReadSByte()

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

ReadSingle()

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

ReadString()

Lê uma cadeia do fluxo atual. A cadeia é precedida pelo comprimento, codificada como um inteiro sete bits de cada vez.

ReadUInt16()

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

ReadUInt32()

Lê um inteiro sem sinal de 4 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()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
IDisposable.Dispose()

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

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

Aplica-se a

Ver também