yyz2191958 发表于 2024-2-2 15:27:45

求扫盲:文件大小135字节,占用空间0字节,是怎么一回事?

求扫盲:文件大小135字节,占用空间0字节,是怎么一回事?

edison_2008 发表于 2024-2-2 16:12:58

1024
计算方式,显示方式

忽略不计{:1_201:}

yyz2191958 发表于 2024-2-2 16:31:34

edison_2008 发表于 2024-2-2 16:12
1024
计算方式,显示方式



原来是这样

wjqok 发表于 2024-2-2 17:00:12

不存在忽略的

szwp 发表于 2024-2-2 17:12:39

yyz2191958 发表于 2024-2-2 16:31
原来是这样

打开全选复制十份保存后再看

holley2008 发表于 2024-2-2 17:13:07

NTFS会为每个文件分配1KB的索引空间($MFT)用来记录文件的基本信息。不过这个空间通常用不完,于是如果文件内容少,Windows就会把内容直接写到索引空间里空余的地方。看上去就是不占硬盘空间了。关于$MFT可以参看:https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/backup-and-storage/ntfs-reserves-space-for-mft

ddzyhhh 发表于 2024-2-2 18:33:06

本帖最后由 ddzyhhh 于 2024-2-2 19:40 编辑

NTFS使用$MFT来保存文件信息,一般来说一个文件对应$MFT里的一条记录。每条记录长度是1KB:
记录内容大概是:| 记录头 | 10H属性 | 30H属性 | …… | 填充数据到1KB |

不同的属性用于保存不同的文件信息,比如文件名,修改时间,ACL等等。当文件足够小的时候,NTFS会把文件内容保存在80H属性中,而不是单独申请一个簇来保存。

下图是一个1.txt文件的例子:记录头是FILE0,这是一个标记。文件名使用unicode(UTF-16)保存(蓝框),是1.txt,文件内容是123,粉色区域开头的字节是80 00 00 00,表示80H属性



从截图上看,因为一条记录是1024字节(400H),而这个记录只有150H这么多,所以NTFS会把文件直接放在MFT里,不额外占用空间。当MFT里放不下的时候,NTFS才会额外申请簇。

https://www.zhihu.com/question/392687083/answer/3308997642


紧急追踪 发表于 2024-2-2 19:13:32

太细节了

yyz2191958 发表于 2024-2-2 21:02:47

谢谢各位大侠解惑

农村户口_1201 发表于 2024-2-2 21:41:58

ddzyhhh 发表于 2024-2-2 18:33
NTFS使用$MFT来保存文件信息,一般来说一个文件对应$MFT里的一条记录。每条记录长度是1KB:
记录内容大概 ...

假设我一个分区里有很多很多的2KB的文件,$MFT又刚好放不下,就需而外占用空间,那 这样的话会不会这个分区只有大概一半的分区用来存文件,一般的分区用来存$MFT?

窄口牛 发表于 2024-2-3 08:31:58

本帖最后由 窄口牛 于 2024-2-3 08:49 编辑

你可以测试下多少个空格才会占地方?猜测和硬盘格式化簇大小还有关系?

ddzyhhh 发表于 2024-2-3 16:58:18

农村户口_1201 发表于 2024-2-2 21:41
假设我一个分区里有很多很多的2KB的文件,$MFT又刚好放不下,就需而外占用空间,那 这样的话会不会这个分 ...

不会。

slofccf 发表于 2024-2-19 09:37:08

谢谢解惑

hehuiying 发表于 2024-4-14 14:22:13

谢谢分享
页: [1]
查看完整版本: 求扫盲:文件大小135字节,占用空间0字节,是怎么一回事?