Windows 8中非零文件的“磁盘大小”为零?
Posted
技术标签:
【中文标题】Windows 8中非零文件的“磁盘大小”为零?【英文标题】:"size on disk" is zero for non-zero file in windows 8? 【发布时间】:2014-05-24 12:18:15 【问题描述】:我发现我的磁盘上有一些文件, 1) 实际大小不是零,而是很小,大约 500 字节 2) 当您检查其属性时,“磁盘大小”显示为零 3)如果我把文件变小,“磁盘大小”仍然是 0 4) 如果我让文件更大,甚至更大 1 个字节,磁盘上的大小将变为 4096 5) 磁盘未压缩
这怎么可能?我的操作系统是 windows 8.1:这是 windows 8 的新功能吗? windows 8 智能到可以将这些小文件合并到一个磁盘扇区吗?
有人可以确认吗?
如果是新功能,如何禁用?
【问题讨论】:
【参考方案1】:NTFS 中的文件由主文件记录表中的(至少一个)文件记录组成(称为 MFT - 每个文件记录由名称、文件信息等属性组成)数据通常位于一个或多个集群中磁盘。 MFT 中的文件记录包含对这些集群的引用(称为非常驻属性)。当数据量非常小时,甚至它的数据都在 MFT 记录中——数据属性是常驻的。因此 NTFS 不必分配任何集群。磁盘上的大小是分配的簇数 * 一个簇的大小,因此如果数据属性是常驻的,则磁盘上的大小为零。如果达到文件记录的最大大小,数据属性将变为非常驻,NTFS 分配第一个簇,因此磁盘上的大小为 1 个簇 - 4096 字节。
【讨论】:
正确。 MFT 记录中的可用空间取决于文件名的长度、存在的安全属性以及其他(通常很少见)因素。在测试中,最大可能的常驻数据约为 700–800 字节,具有正常的安全性和文件名长度。【参考方案2】:这不是特定于 Windows 8 的(所以我修改了你的问题)。 Microsoft 的文件系统驱动程序管理的所有 NTFS 都是如此。
我无法想象您为什么要禁用这种效率:这是一个特别出色的功能,因为许多计算机文件往往很小。
我已经确认,如果文件缩小,直到 XP NT 的 NT 版本不会将数据移动到 MFT 记录(并释放集群)。因此,您可以将一些数据附加到此类文件中,使它们至少为 1024 字节,然后将它们截断回原始大小。
【讨论】:
我想禁用它,因为有时我需要比较 2 个目录,并确保它们完全相同。但这个功能使这成为不可能。我无法控制文件在磁盘上的大小。一个文件只有 1 个字节,但它在磁盘上使用 4096 个字节,而另一个文件是 500 个字节,但磁盘上的大小为零。似乎对磁盘属性的大小没有严格的规定。 @MingDong 磁盘文件大小的知识如何帮助您比较目录?在进行二进制比较之前,您可以使用实际文件长度似乎更有用且更容易获得信息。以上是关于Windows 8中非零文件的“磁盘大小”为零?的主要内容,如果未能解决你的问题,请参考以下文章