自定义压缩算法,磁盘大小奇怪

Custom compression algorithm, strange size on disk

我刚刚为 PNG 图像编写了一个自定义压缩算法,效果非常好。但是,其属性下的 "size on disk" 标签存在奇怪的差异。这是一张照片:

这是我的算法创建的压缩文件的图片:

我比 PNG 高了大约 200%,我只是不知道为什么文件大小显示显示如此奇怪的数据。

磁盘大小是磁盘 block size 的倍数。简短版本:文件存储在磁盘上的字节数与它们的确切字节数不同,因为文件大小之间的微小差异会使从磁盘读取的过程变得痛苦且效率低下。相反,磁盘具有块大小(通常为 4096 字节,尽管这是用户可配置的),并且磁盘上的每个文件都以块而不是字节为单位读取和写入。

因此,文件大小衡量的是文件数据占用了多少字节,但磁盘大小是文件由于阻塞而实际占用磁盘的字节数。大小在 1-4096 字节之间的文件将占用一个 4096 字节的块,因此它在磁盘上的大小为 4KB。第二个文件变大4097字节,它必须使用2个块,它在磁盘上的大小将变成8KB。

0 字节磁盘大小的文件是文件 table 的产物。有关文件的元数据(名称、路径、类型等)存储在文件 table 中,它占用磁盘的一个单独部分,不计入文件本身的大小。由于 an optimization of the way file tables can store data,某些小文件可能会将其 内容 与其元数据一起存储在文件 table 中。这是(据我所知)完全不受你控制的。