Você está na página 1de 3

11/09/2020 C# - Escrevendo e Lendo arquivos binários

C# - Escrevendo e Lendo arquivos binários

Hoje vamos recordar como escrever e como ler arquivos binários na linguagem C#.

Já precisou escrever e ler dados fortemente tipados em um arquivo binário ?

Para quem sabe é bem simples...

Uma abordagem tradicional seria fazer o seguinte:

Criar um novo objeto System.IO.FileStream referenciado o arquivo;


Para escrever dados basta envolver o FileSTream em um System.IO.BinaryWriter e usar o método Write;
Para ler dados envolva o FileStream em um System.IO.BinaryReader e use o método Read;

Simples assim...

A classe BinaryReader lê tipos de dados primitivos como valores binários em uma codificação específica e a classe
BinaryWriter grava tipos primitivos em binário em um fluxo e suporta cadeias de caracteres de escrita em uma
codificação específica.(Um objeto BinaryWriter trabalha no nível mais baixo de Streams.)

A classe BinaryWriter é usada para escrever tipos primitivos como valores binários em um fluxo de codificação
específica. Ela trabalha com objetos de fluxo que fornecem acesso aos bytes subjacentes. Para criar um objeto
BinaryWriter, primeiro você tem que criar um objeto FileStream e depois passar o BinaryWriter ao método construtor.

Após criar os objetos é feita a leitura do arquivo origem em blocos de 1024 bytes escrevendo em seguida no destino.
Esse processo é repetido até alcançar o final do arquivo.

A seguir vamos criar um projeto C# do tipo Console na plataforma .NET Core e mostrar isso na prática.

recursos usados:

Visual Basic 2019 Community Edition

Criando o projeto C# no VS 2019


Crie um projeto Console do tipo .NET Core chamado CShp_ArquivosBinarios1;

Inclua o código a seguir no método Main da classe Program:

using System;
using System.IO;

namespace CDhp_ArquivosBinarios1
{
class Program
{
static void Main(string[] args)
{
var arquivo = "teste.bin";
// criar um novo arquivo e um writer.
using (FileStream fs = new FileStream(arquivo, FileMode.Create))
{
using (BinaryWriter w = new BinaryWriter(fs))
{
// escrever dados : decimal, strings e char.
w.Write(124.23M);
w.Write("Macoratti");
w.Write("Quase tudo para .NET");

www.macoratti.net/20/04/c_binarq1.htm 1/3
11/09/2020 C# - Escrevendo e Lendo arquivos binários
w.Write('!');
}
}
Console.WriteLine($"Arquivo binário {arquivo} criado com sucesso");
Console.WriteLine("Pressione uma tecla para ler o arquivo");
Console.ReadLine();

// Abrir o arquivo no modoe somente leitura


using (FileStream fs = new FileStream("teste.bin", FileMode.Open))
{
// Exibir a informação do arquivo
using (StreamReader sr = new StreamReader(fs))
{
Console.WriteLine("Exibindo o conteúdo do arquivo:");
Console.WriteLine(sr.ReadToEnd());
Console.WriteLine();
Console.WriteLine("Convertendo os dados para o formato apropriado:");
// Le os dados e converte para o formato apropriado
fs.Position = 0;
using (BinaryReader br = new BinaryReader(fs))
{
Console.WriteLine(br.ReadDecimal());
Console.WriteLine(br.ReadString());
Console.WriteLine(br.ReadString());
Console.WriteLine(br.ReadChar());
}
}
}

Console.WriteLine(Environment.NewLine);
Console.ReadLine();
}
}
}

Executando o projeto teremos:

Pegue o código do projeto aqui:  CShp_ArquivosBinarios1.zip

"Levantarei os meus olhos para os montes, de onde vem o meu socorro.


O meu socorro vem do Senhor que fez o céu e a terra."
Salmos 121:1,2

Referências:

Apresentando .NET Core CLI - Macoratti.net


VB .NET - Lendo Arquivos Binários - BinaryReader - Macoratti ...
Tratamento de arquivos - Questões práticas - Macoratti.net
C# - Copiando Arquivos - Macoratti
C# - Localizando linhas em um arquivo texto - Macoratti.net
www.macoratti.net/20/04/c_binarq1.htm 2/3
11/09/2020 C# - Escrevendo e Lendo arquivos binários
VB .NET - Armazenando um objeto serializado em um arquivo
C# - Programa para Loja de Instrumentos Musicais - Macoratti ...
C# - Lendo e gravando dados binários no SQL ... - Macoratti

José Carlos Macoratti

www.macoratti.net/20/04/c_binarq1.htm 3/3