我正在用Java编写自己的图像压缩程序,我有熵编码数据存储在多个数组中,我需要写入文件。我知道写入文件的不同方法,但我想知道在尝试使用尽可能少的存储空间时需要考虑什么。例如,我应该使用什么字符集(我只需要写正数和负数),如果我使用Scanners / BufferedWriters等,我能不能写一个小于1个字节的文件。事先谢谢,我可以如果需要,提供更多信息。
答案 0 :(得分:2)
你应该
不,你将无法在文件中写入少于一个字节。该字节是可以存储在文件中的最小信息量。
答案 1 :(得分:1)
我应该使用什么字符集
您需要将数据写为字节而不是字符,因此请忘记字符集。
我能不能将少于1个字节写入文件
不,这是不可能的。但是为了遵循解码器预期的比特流,您可能需要在将该字节写入文件之前从5位和3位构造一个字节。
答案 2 :(得分:1)
压缩几乎总是比文件IO贵。你不应该担心写作的速度,除非你知道这是一个瓶颈。
我正在用Java编写自己的图像压缩程序,我有熵编码数据存储在多个数组中,我需要写入文件。我知道写入文件的不同方法,但我想知道在尝试使用尽可能少的存储空间时需要考虑什么。
以二进制格式写入数据,它将是最小的。这就是几乎所有图像格式都使用二进制文件的原因。
例如,我应该使用什么字符集(我只需要写正数和负数),
字符编码用于编码字符,即文本。您通常不会以二进制格式使用这些格式(除非它们包含一些您最初不太可能做的文本)。
我可以写一个不到1个字节的文件,
从技术上讲,你可以使用少于磁盘上的块大小,例如512字节或4 KB。你可以写任何少于这个的数量,但它不会占用更少的空间,也不会真的重要,因为磁盘的数量太小而无法担心。
我应该使用Scanners / BufferedWriters等。
不,这些是用于文本的,
而是使用DataOutputStream和DataInputStream作为二进制文件。