Ler Arquivo Java e salvar utilizando byte

3 respostas
_

Olá Pessoal.

Seguinte, estou precisando ler um arquivo .TXT que contém um texto.

Após realizar a leitura desse arquivo, preciso converter seus caracteres para ASCII e depois disso salvar o valor asc em um arquivo.

Minha dúvida está no seguinte.

O arquivo inicial de leitura tem por exemplo 20 bytes, mas quando eu codifico meu texto para ASC e salvo o mesmo, ele gera um arquivo que possui cerca de 200bytes.

Então notei o seguinte, por menor que seja meu número, por exemplo o ‘0’ ou ‘1’, ele está sempre reservando 8 bits (1 byte) para armazenar esse número, e com isso eu terei na saída um arquivo muito maior que meu arquivo inicial.

Gostaria de saber se alguém saberia alguma forma para que eu possa contornar esse problema de desperdício de bits.

Existe alguma forma que eu possa ir jogando os bits em um Stream e após isso realizar a gravação deles em um arquivo? Alguém saberia me dar uma luz ?

Valeu Pessoal.

3 Respostas

C

Qual o motivo da transformação dele em Bytes?

Transferência de computador via rede?.. algo assim?

_

charleston10:
Qual o motivo da transformação dele em Bytes?

Transferência de computador via rede?.. algo assim?

É um exemplo que estou tentando fazer. Na verdade vou aplicar uma compreensão nele utilizando Fibonacci, daí após isso vou ter uma sequência de bits 0s e 1s, só que como estou utilizando String e concatenando os números, ele acaba utilizando 1 byte para cada número/caractere.

Dái pra isso que queria usar bytes. Pro arquivo final não ficar maior que o arquivo de entrada.

E

Trabalhe com java.util.BitSet. É o jeito mais bonitinho de se trabalhar com bits em Java.
Então use o método http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html#toByteArray() (atenção, requer Java 7 - não está disponível para o Java 6. )
Quando for recuperar os dados, leia os bytes em um byte array, e então use http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html#valueOf(byte[]) .

Criado 29 de agosto de 2012
Ultima resposta 30 de ago. de 2012
Respostas 3
Participantes 3