BinaryReader Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
| 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 |
| Read7BitEncodedInt() |
Lê num inteiro de 32 bits em formato comprimido. |
| ReadBoolean() |
Lê um |
| 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 |
| 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 |
| 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). |