如何使用 java 以位形式保存文件?

How to save a file in bits using java?

现在我正在从事一个使用哈夫曼编码进行文本压缩的项目。我能够读取一个文件(包含 ASCII 文本)并创建一个霍夫曼编码的消息。例如,如果我的文件 "input.txt" 包含以下文本: Missippi river,那么我的编码码字就是这样的 1110100110111001001010000110101111001110 有 40 位,而我的 "input.txt" 是 14 字节(14*8 = 112 位)。所以我将 112 位减少到 40 位,但是如何将我的代码字(包含 O 和 1)输出到一个只有 40 位长的文件中?我尝试将此字符串放入 .txt. 文件,但 .txt. 文件最终比我的 "input.txt" 更长,从而使我的整个项目变得毫无价值。我正在尝试创建一个 encoder/decoder 模型。我已经成功创建了编码器部分,我也能够创建 Huffman 码字,但是我如何输出它以便我的解码器可以读取它并解压缩。

谢谢

代替 0 和 1 的字符串,您可以使用 java BitSet 将 1/0 存储为布尔位,然后在编写它时,您将使用 toByteArray 来直接将字节写入二进制文件,而不是写入一串文本。