Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Tsunamy_boy

ler ficheiros em binário

Mensagens Recomendadas

Betovsky    2
Betovsky

Opá, não sei porque isto não apareceu nas por ler. Só reparei que estava isto aqui porque fizeste referência no teu outro problema de compactação de binários.

Ora aqui fica então um pequeno exemplo de como ler ficheiros em modo binário em C#

// Open the stream and read it back.
using (FileStream fs = File.Open("tralala.file", FileMode.Open)) {
   byte[] buf = new byte[1024]; //Um buffer de 1024 bytes
   
   while (fs.Read(buf,0,buf.Length) > 0) {
       // Escrever para a consola o conteúdo em hexadecimal por exemplo.
       foreach(byte b in buf)
          Console.Write(b.ToString("X2"); 
   }
}

Não testei, mas deve ser algo tipo isto.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tsunamy_boy    0
Tsunamy_boy

aah eu perguntei pork normalmente só uso:

b.ToString(); com esses parâmetros desconhecia o resultado

brigadão

Olha estive a ver o código e o resultado parece-me estranho pois da-me mais combinações de hexadecimais q os caracters do ficheiro e fica com um monte de zeros no fim.testas-t o código?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Como disse na altura, não testei o código. Pus directamente aqui no fórum sem qualquer validação.

Em relação ao número de zeros a mais no fim, deve ser o facto de na última vez que lê o ficheiro, ele não preenche o buffer todo. Portanto quando estou a imprimir para o ecrã vou também imprimir a parte do buffer que não foi usada. Para evitar isso era usar antes o valor obtido aquando a leitura do ficheiro. Aliás deve-se sempre fazer sobre o número de bytes lidos e não sobre o buffer todo, só omiti esse passo porque era mais para demonstrar a leitura de bytes do ficheiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tsunamy_boy    0
Tsunamy_boy

Para evitar isso era usar antes o valor obtido aquando a leitura do ficheiro. Aliás deve-se sempre fazer sobre o número de bytes lidos e não sobre o buffer todo

Desculpa mas não estou a ver como.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tsunamy_boy    0
Tsunamy_boy

estive a ver e o que fiz foi:

richTextBox1.Clear();

            using (FileStream fs = File.Open(textBox1.Text, FileMode.Open))

            {

                byte[] buf = new byte[fs.Length];

                while (fs.Read(buf, 0, buf.Length) > 0)

                {

                    foreach (byte b in buf)

                        richTextBox1.Text += b.ToString("X2");

                }

                label13.Text = richTextBox1.Text.Length.ToString();

            }

Crie um buffer com o tantos bytes como tem o tamanho total do ficheiro.

è correcto assim como ta?

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade