Ajuda com leitura de arquivo

3 respostas
S

Pessoal,

Como posso fazer para ler bytes em um arquivo .dat…

Uso o FileChooser, seleciono o arquivo repleto de bytes, crio um objeto do tipo File… tudo certinho… mas como posso ler este arquivo e jogar no console ou em uma lista…

Abaixo segue pedaços do codigo da minha linha de raciocinio, se alguém puder me dar umas dicas… agradeço!

JFileChooser guiAbrirArquivo = new JFileChooser();

guiAbrirArquivo.showOpenDialog(this);

guiAbrirArquivo.setVisible(true);
File arquivo = guiAbrirArquivo.getSelectedFile();

try {

FileReader reader = new FileReader(arquivo);

BufferedReader leitor = new BufferedReader(reader);

}

3 Respostas

ViniGodoy

Arquivos .dat não tem um formato específico.

A dúvida é, você conhece o formato do arquivo?

Se não conhecer, fica difícil…

Ou você quer jogar os hexas mesmo? Tipo dump:
00 0A F0 AE F1 a98.1

S

Eu estou lendo uma placa serial…

Então gravo em um arquivo “teste.dat” os bytes que escuto em minha serial…

O que eu preciso agora é ler este arquivo, gostaria de imprimir os bytes, e também seria interessante converter esses bytes para hexa…

Tudo isto para estudar o protocolo de comunicação desta placa.

Valeu,

ViniGodoy

Neste caso,

  1. leia o buffer byte a byte
  2. Use Integer.toHexString(byteLido) para converter os bytes em hexa. Se preferir letras maiúsculas, pode her Integer.toHexString(byteLido).toUpperCase();
  3. Para transformar num char, você pode fazer um cast direto.
    char c = (char) byteLido; E então imprimir o seu char na tela. No mais, é torcer para os dados estarem codificados em UTF-8 (se a saída for texto, muito provavelmente estará).

Numa primeira etapa, não seria melhor pegar um editor hexa qualquer? Existem diversos gratuitos ou shareware na internet…

Só um comentário: Da próxima vez que for colocar códigos no GUJ, dá uma lida nesse artigo:
http://www.guj.com.br/posts/list/50115.java

Ele vai te ensinar a fazer isso corretamente, além de ensinar alguns recursos interessantes do GUJ! :wink:

Criado 3 de março de 2007
Ultima resposta 3 de mar. de 2007
Respostas 3
Participantes 2