如何使用 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
来直接将字节写入二进制文件,而不是写入一串文本。
现在我正在从事一个使用哈夫曼编码进行文本压缩的项目。我能够读取一个文件(包含 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
来直接将字节写入二进制文件,而不是写入一串文本。