当其中有数据时,磁盘上的文件大小如何为0字节?


106

我在Windows 10中有一个包含362字节数据的文件,但是“磁盘大小”仅为0字节。这是一个简单的用汇编语言编写的“ Hello world”程序,并保存在Notepad ++中

当文件大小为362字节时,磁盘上的大小怎么可能为零?

我有一个SSD,而不是普通的硬盘。

“属性”对话框的屏幕截图:

“属性”对话框的屏幕截图


4
简短答案:如果磁盘上不需要额外的空间来存储其内容。
David Schwartz

11
@Thomas不是重复的。这个名字听起来很相似,但是这个问题是在问,尽管要求在某个地方注册,但Windows为什么将零字节文件声明为零大小。这个问题问,即使文件中有数据,为什么磁盘上的大小也可以为零。
本N


@BenN标记为不适当,因为您是对的,它肯定不是重复的。
威廉

嗨,Coder88,我相信将您的帖子标记为重复的人是错误的-另一个问题是在问不同的东西。您确实提出了一个很好的问题。如果您想表明问题已解决,则可以单击此处答案旁边的复选标记。
本N

Answers:


155

如果文件太小以至于其内容和文件系统簿记适合1KB,则会发生这种情况。为了节省磁盘空间,NTFS会将小文件“驻留”,将其内容直接存储在文件记录中,因此无需为其分配群集。因此,磁盘上的大小为零,因为除了文件记录之外,什么也没有。文件变得足够大后,NTFS使其成为“非驻留”文件,为其分配一个或多个群集(在磁盘上创建非零的“磁盘大小”),并在文件记录中创建一个“映射对”来代替数据。指向集群。

SSD硬盘驱动器或Windows 10不会对此产生影响;它只是一个NTFS功能。进一步阅读:NTFS文件增长的四个阶段

请注意,“磁盘大小”指标并不完全正确。例如,它永远不会包含NTFS文件记录占用的常量1KB。该度量标准是在Windows 95中引入的,它不使用NTFS,因此无法解决此现象。它只是显示文件大小四舍五入到群集大小的下一个倍数。该估计算法一直应用于Windows 7,即使它们之间的许多Windows版本都使用NTFS和常驻存储。最终,它在Windows 8中进行了更新,以将磁盘上只有常驻数据的文件计数为零大小。进一步阅读:“磁盘大小”是什么?


1
有一会儿,我以为我们正在研究重复数据删除的影响(blog.fosketts.net/2012/01/03/…),但我相信该功能的工作水平对“磁盘大小”指标是透明的。
misha256 '16

8
但是,等等...我无法在我的NTFS卷(Windows 7)上复制OP行为。无论我如何创建微小文件(有些文件只有一个字节长),根据文件属性对话框,它们每个都占用4KB的 “磁盘空间”。嗯...
misha256 '16

8
@ misha256恩,我可以在Windows 8.1上以700字节以下的文件重现它。我的猜测是,该算法在Windows 7和8.1之间变得更加智能,因为最初它不知道任何花哨的NTFS东西()。请注意,一旦文件进入第二阶段,它就永远不会缩小。
本N

6
@Philipp我猜一个人都可以争论。传统上,“磁盘上的文件”是“分配的群集的大小”(例如,您可能会看到选择太大的群集大小的效果)。据我所知,它从未包含文件系统所需的“目录”空间(例如,“目录条目”的大小或“ FAT条目链的长度”)。
TripeHound

3
@Philipp:无论如何,包括文件大小在内的簿记工作都变得很快:您将如何描述一个包含3个名称的1群集文件?
重复数据删除器2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.