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

Kry*_*hic 0 c# compression filesystems windows-10

我刚刚为PNG图像编写了一个自定义压缩算法,它的工作非常精美.但是,与其属性下的"磁盘大小"标签存在奇怪的差异.这是一张图片: 在此输入图像描述

这是我的算法创建的压缩文件的图片:在此输入图像描述

我击败PNG大约200%,我只是不知道为什么文件大小显示这些奇怪的数据.

Dio*_*nin 7

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

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

0字节磁盘大小的文件是文件表的工件.有关文件的元数据(名称,路径,类型等)存储在文件表中,该文件表占用磁盘的单独部分,不计入文件大小.由于文件表可以存储数据的方式的优化,某些小文件可以将其内容与其元数据一起存储在文件表中.这是(据我所知)完全不受你的控制.