Gravar/ler Arquivo

Estou gravando um arquivo manipulando bits para um trabalho sobre Huffman. Só que estou tento um problema ao gravar/ler o arquivo. Fiz alguns testes e está dando um problema. Não sei se é na leitura ou na escrita. Olha esse código:

File f = new File("teste.txt"); BufferedWriter writer = new BufferedWriter(new FileWriter(f)); int i = 600; writer.write(i); writer.close(); BufferedReader reader = new BufferedReader(new FileReader(f)); int r; r = reader.read(); System.out.println(r); reader.close();
O resultado é 63. Para qualquer valor acima de 255 ele “printa” 63. Fica parecendo que ele só grava 1 byte, enquanto que pela documentação do java fala que ele grava o char ou seja 2 bytes.
Alguem sabe onde estou errando?
Obrigado

Fiz mais alguns testes e parece que só grava 1 byte mesmo. Que tosco. Alguem sabe como eu gravo o char completo?

As classes FileReader e FileWriter são usadas para trabalhar com arquivos de texto.
Para trabar diretamente com os bytes de um arquivo, vc pode usar as classes FileOutputStream (escrita) e FileInputStream (leitura).

[]´s

Ah, outra coisa. Um byte são 8 bits certo? Então o intervalo de representação de um byte em decimal é de 0 a 255.

[]´s

Valeu. Vou testar essas classes. O grande problema que eu achei foi porque a interface dessas classes pedem um int que é 32bits, daí eu manipulei os dados dentro do int. Só que o programa não funcionou, então procurei na documentação do método write e estava escrito: “Write a single character. The character to be written is contained in the 16 low-order bits of the given integer value; the 16 high-order bits are ignored.”. Então converti para caber em 16-bit e continuou não funcionando. Agora fui procurar no Java Tutorials e olha só: “The Java platform stores character values using Unicode conventions. Character stream I/O automatically translates this internal format to and from the local character set. In Western locales, the local character set is usually an 8-bit superset of ASCII.” É por isso que só grava 8 bits :?