• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

M6

[C#] Ficheiros Binários

5 mensagens neste tópico

Neste pequeno artigo vou explicar como ler e escrever ficheiros binários usando BinaryReader e BinaryWriter.

Para tal vou fazer dois pequenos exemplos, um que irá ler e escrever um ficheiro binário e outro que irá abrir um ficheiro binário, o calc.exe correspondente à calculadora do Windows, e irá escrevê-lo noutro lugar.


File

A classe File, no namespace system.IO, serve para ajudar à construção de objectos FileStream entre outras coisas.

Escrever Ficheiro

Neste primeiro exemplo, a classe WriteBinaryFile irá criar um ficheiro de nome pap.data usando a classe File.

Depois de criar o ficheiro, usando o método Create(), recebe-se um FileStream, o qual aplicado a um BinaryWriter, permite enviar qualquer tipo de dados e guardá-lo no ficheiro.

using System;
using System.IO;

public class WriteBinaryFile
{
 public static void Main(string[] args)
   {
     FileStream  fs = File.Create(Server.MapPath("test.dat"));
     BinaryWriter bw = new BinaryWriter(fs);

     int x = 10;
     decimal d = 3.234M;
     string str = "Visitem o cantinho do C# no Forum Portugal a Programar.";

     bw.Write(x);
     bw.Write(d);
     bw.Write(str);

     bw.Close();
     fs.Close();
  }
}

Ler Ficheiro

Neste exemplo, a classe ReadBinaryFile irá abrir um ficheiro de nome pap.data usando a classe File.

Depois de abrir o ficheiro, usando o método OpenRead(), recebe-se um FileStream, o qual aplicado a um BinaryReader, permite recuperar qualquer tipo de dados.

using System;
using System.IO;

public class ReadBinaryFile
{
  public static int Main(string[] args)
  {
     FileStream  fs = File.OpenRead(Server.MapPath("pap.data")); 	
     BinaryReader br = new BinaryReader(fs);

     Response.Write(br.ReadInt32());
     Response.Write(br.ReadDecimal());
     Response.Write(br.ReadString());

     br.Close();
     fs.Close();
 }
}

Copiar Ficheiro

Neste exemplo, a classe FileStream irá abrir o ficheiro calc.exe (atenção que a localização do ficheiro pode mudar de acordo com a instalação do Windows) e irá escrever uma cópia do ficheiro de nome calc_clone.exe em c:\.

O acesso ao ficheiro, tanto para leitura como para escrita é efectuado através do FileStream, sendo um dos argumentos do construtor o modo de acesso ao ficheiro.

Uma vez aberto o ficheiro, copia-se o conteúdo do mesmo para um array de bytes: o array de bytes MyData será tão grande quanto o tamanho da stream, que representa o ficheiro binário, e usando o método Read() atribui-se o conteúdo do ficheiro ao MyData.

Após a leitura do ficheiro a stream é fechada e passa-se à escrita.

Tendo em memória o conteúdo do ficheiro binário, basta escrevê-lo no disco: usando o BinaryWriter() ligado ao ficheiro que queremos escrever basta usar o método Write() com o MyData como argumento.

using System;
using System.IO;

public class ReadBinaryFile
{
  public static int Main(string[] args)
  {
   -- Ler
   FileStream fsr = new FileStream(@"C:\\winnt\\system32\\calc.exe", FileMode.OpenOrCreate, FileAccess.Read);
   byte[] MyData= new byte[fsr.Length];
   fsr.Read(MyData, 0, System.Convert.ToInt32(fsr.Length));
   fsr.Close();

   -- Escrever
   FileStream fsw = new FileStream(@"C:\\calc_clone.exe", FileMode.OpenOrCreate, FileAccess.Write);
   BinaryWriter bw = new BinaryWriter(fsw);
   bw.Write(MyData);
   bw.Close();
   fsw.Close();
 }
}

Informação Relacionada:

[Artigo no Wiki]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais um good tutorial!

M6 quando puderes faz um que envolva variáveis, por exemplo pedir um nome ao utilizador, depois mostrá-lo na linha de comandos ou numa janela... Assim coisa do género...

Estou a tentar iniciar-me em C# e estes tutoriais ajudam muito!  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado.

Queres uma aplicação de consola pura? Vamos ver o que se arranja. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De consola e utilizando janelas também... Acho que ver como se faz isso ía ajudar-me imenso e ajudar quem se inicia nesta linguagem, porque de resto não é muito diferente de JAVA, apenas mudam algumas cenas... :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora