百科问答小站 logo
百科问答小站 font logo



为什么一个36字节的文本文档占用空间0字节? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

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才会额外申请簇。




  

相关话题

  都说寄存器比内存快,但是为什么有些时候运行显示的是寄存器更慢? 
  进程被操作系统加载之后,磁盘上的二进制文件可以删掉吗?如果删掉对正在运行的进程有什么影响吗? 
  linux创建的硬链接为什么不占用磁盘空间? 
  硬盘写到一半断电时文件系统发生了什么? 
  定点小数的取值范围是怎么推算出来的? 
  x86架构字节序是小端模式,其bit位序是类似小端模式还是大端模式? 
  为什么会有 U 盘独个文件不可以超过 4GB 这种设定? 
  页表放在主存中,那么页表基址寄存器中存放的页表基址是虚拟基址还是主存中页表实际基址? 
  进程被操作系统加载之后,磁盘上的二进制文件可以删掉吗?如果删掉对正在运行的进程有什么影响吗? 
  嵌入式设备使用NandFlash作为存储,那么不使用文件系统是否可行? 

前一个讨论
不同x86体系结构下的汇编语言是可以移植的吗?
下一个讨论
Windows C++如何直接写分区表?





© 2025-01-31 - tinynew.org. All Rights Reserved.
© 2025-01-31 - tinynew.org. 保留所有权利