Arquivo Binário?

Pessoal, sou péssimo mexendo com arquivos e minha dúvida tem muito a ver com isso.
Seguinte, eu tô tendo que fazer um “compactador” pra comprimir somente texto pra uma cadeira da faculdade. Na verdade eu implementei uma árvore de Huffman que é uma estrutura muito usada em compactação. Sem querer me aprofundar muito no funcionamento dessa estrutura, o que interessa dizer pra quem não conhece é que ela me gera sequências de bits pra representar cada caractere da frase.
Por exemplo, chutando valores, um caractere ‘L’ poderia ser um 11; um caractere ‘e’ ser “010” e um ‘o’ ser 10… assim… a frase “Leo” estaria na forma 1101010. “Leo” então deixaria de ocupar 3 bytes pra só ocupar 7 bits. Explicado por cima, o problema todo que estou encontrando é pq eu tenho que inserir esse código gerado (no exemplo o 1101010) num arquivo. Isso é, se eu inserir simplesmente em forma de texto vai piorar porque serão 7 caracteres, 7 bytes ao invés dos 3 da original :martelada:
Assim, as dúvidas são:

  1. Vocês sabem como eu posso criar um arquivo binário em java?
  2. Vcs têm alguma sugestão de como eu iria inserir esses dados nesse arquivo, já que ‘1’ é um caractere e eu tenho que converter pra bit?
  3. Como seria a manipulação desse arquivo? Assim… como eu leio um arquivo binário?

Sem mais, até porque já foi demais, ficaria muito grato se vcs pudessem me tirar qualquer uma dessas dúvidas. Qualquer dica será muito bem vinda. :okok:
Valeu!
Leonardo Oliveira.

Da uma olhada aqui vê se ajuda.
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter09/fileBinaryIO.html

Cara eu tenho um tutorial aqu comigo sobre arquivos binarios! Se quiser eu posso mandar!!!

Pessoal, valeu mesmo pelas dicas… só que eu ainda estou com o problema de que eu até insiro no arquivo binário os valores que eu quero, mas só insiro em forma de Int, Char etc. Até boolean eu tentei na esperança de ser um bit, mas aí que as aulas iniciais de java fizeram sentido e eu pude perceber que boolean ocupa um byte. :paulada:
A pergunta é… será que existe alguma maneira de eu literalmente inserir um bit num arquivo? Eu sei que é meio forçoso, mas será que não existe nenhuma maneira de eu dizer que quero inserir um 0 ou um 1? Pq pelo que pude notar só isso mesmo pode quebrar 100% meu galho.
Novamente valeu pelas dicas e, por favor, me digam ao menos que nem em sonho eu consigo inserir um bit.

Para mexer com bitzinhos, use a classe BitSet :wink: