Hoje vamos recordar como escrever e como ler arquivos binários na linguagem C#. |
Para quem sabe é bem simples...
Uma abordagem tradicional seria fazer o seguinte:
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:
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");
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:
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
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