Compartilhar via


BinaryWriter Classe

Definição

Grava tipos primitivos em binário em um fluxo e dá suporte à gravação de cadeias de caracteres em uma codificação específica.

public ref class BinaryWriter : IDisposable
public ref class BinaryWriter : IAsyncDisposable, IDisposable
public class BinaryWriter : IDisposable
public class BinaryWriter : IAsyncDisposable, IDisposable
[System.Serializable]
public class BinaryWriter : IDisposable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryWriter : IDisposable
type BinaryWriter = class
    interface IDisposable
type BinaryWriter = class
    interface IAsyncDisposable
    interface IDisposable
[<System.Serializable>]
type BinaryWriter = class
    interface IDisposable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryWriter = class
    interface IDisposable
Public Class BinaryWriter
Implements IDisposable
Public Class BinaryWriter
Implements IAsyncDisposable, IDisposable
Herança
BinaryWriter
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 classe BinaryWriter fornece métodos que simplificam a gravação de tipos de dados primitivos em um fluxo. Por exemplo, você pode usar o método Write para gravar um valor booliano no fluxo como um valor de um byte. A classe inclui métodos de gravação que dão suporte a diferentes tipos de dados.

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

Importante

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

Uma classe derivada pode substituir os métodos dessa classe para dar codificações de caracteres exclusivas.

Construtores

BinaryWriter()

Inicializa uma nova instância da classe BinaryWriter que grava em um fluxo.

BinaryWriter(Stream)

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

BinaryWriter(Stream, Encoding)

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

BinaryWriter(Stream, Encoding, Boolean)

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

Campos

Null

Especifica um BinaryWriter sem repositório de backup.

OutStream

Mantém o fluxo subjacente.

Propriedades

BaseStream

Obtém o fluxo subjacente do BinaryWriter.

Métodos

Close()

Fecha o BinaryWriter atual e o fluxo subjacente.

Dispose()

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

Dispose(Boolean)

Libera os recursos não gerenciados usados pelo BinaryWriter e, opcionalmente, libera os recursos gerenciados.

DisposeAsync()

Libera de forma assíncrona todos os recursos usados pela instância atual da classe BinaryWriter.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Flush()

Limpa todos os buffers do gravador atual e faz com que todos os dados em buffer sejam gravados no dispositivo subjacente.

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 Objectatual.

(Herdado de Object)
Seek(Int32, SeekOrigin)

Define a posição dentro do fluxo atual.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
Write(Boolean)

Grava um valor de Boolean de um byte no fluxo atual, com 0 representando false e 1 representando true.

Write(Byte)

Grava um byte sem sinal no fluxo atual e avança a posição do fluxo por um byte.

Write(Byte[])

Grava uma matriz de bytes no fluxo subjacente.

Write(Byte[], Int32, Int32)

Grava uma região de uma matriz de bytes no fluxo atual.

Write(Char)

Grava um caractere Unicode no fluxo atual e avança a posição atual do fluxo de acordo com o Encoding usado e os caracteres específicos que estão sendo gravados no fluxo.

Write(Char[])

Grava uma matriz de caracteres no fluxo atual e avança a posição atual do fluxo de acordo com o Encoding usado e os caracteres específicos que estão sendo gravados no fluxo.

Write(Char[], Int32, Int32)

Grava uma seção de uma matriz de caracteres no fluxo atual e avança a posição atual do fluxo de acordo com o Encoding usado e talvez os caracteres específicos que estão sendo gravados no fluxo.

Write(Decimal)

Grava um valor decimal no fluxo atual e avança a posição do fluxo em dezesseis bytes.

Write(Double)

Grava um valor de ponto flutuante de oito bytes no fluxo atual e avança a posição do fluxo em oito bytes.

Write(Half)

Grava um valor de ponto flutuante de dois bytes no fluxo atual e avança a posição do fluxo em dois bytes.

Write(Int16)

Grava um inteiro com sinal de dois bytes no fluxo atual e avança a posição do fluxo em dois bytes.

Write(Int32)

Grava um inteiro com sinal de quatro bytes no fluxo atual e avança a posição do fluxo em quatro bytes.

Write(Int64)

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

Write(ReadOnlySpan<Byte>)

Grava um intervalo de bytes no fluxo atual.

Write(ReadOnlySpan<Char>)

Grava um intervalo de caracteres no fluxo atual e avança a posição atual do fluxo de acordo com o Encoding usado e talvez os caracteres específicos que estão sendo gravados no fluxo.

Write(SByte)

Grava um byte assinado no fluxo atual e avança a posição do fluxo por um byte.

Write(Single)

Grava um valor de ponto flutuante de quatro bytes no fluxo atual e avança a posição do fluxo em quatro bytes.

Write(String)

Grava uma cadeia de caracteres com prefixo de comprimento nesse fluxo na codificação atual do BinaryWritere avança a posição atual do fluxo de acordo com a codificação usada e os caracteres específicos que estão sendo gravados no fluxo.

Write(UInt16)

Grava um inteiro sem sinal de dois bytes no fluxo atual e avança a posição do fluxo em dois bytes.

Write(UInt32)

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

Write(UInt64)

Grava um inteiro sem sinal de oito bytes no fluxo atual e avança a posição do fluxo em oito bytes.

Write7BitEncodedInt(Int32)

Grava um inteiro de 32 bits em um formato compactado.

Write7BitEncodedInt64(Int64)

Grava um número de 7 bits de cada vez.

Implantações explícitas de interface

IDisposable.Dispose()

Libera os recursos não gerenciados usados pelo BinaryWriter e, opcionalmente, libera os recursos gerenciados.

Métodos de Extensão

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como as esperas nas tarefas retornadas de um descartável assíncrono serão executadas.

Aplica-se a

Confira também