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

Tsunamy_boy

ler ficheiros em binário

11 mensagens neste tópico

como faço para ler ficheiros em binário (ler ficheiros em binário, não ler ficheiros do tipo binário) cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é apenas uma representação textual. O que importa é que lês bytes, depois fazes com eles o que quiseres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

outra coisa, para que serve o "X2" aqui:

b.ToString("X2");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
       // Escrever para a consola o conteúdo em hexadecimal por exemplo.

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

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