![在完整磁盘上创建文件](https://linux22.com/image/502865/%E5%9C%A8%E5%AE%8C%E6%95%B4%E7%A3%81%E7%9B%98%E4%B8%8A%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6.png)
是否可以在已满的磁盘上创建文件?
创建该文件是否占用空间?
基本上,我看到一个案例,其中 C# 已创建但未能写入任何内容,我认为这表明磁盘已满。
有人知道在已满的磁盘上创建文件是否会失败吗?
答案1
这取决于文件系统。
绝大多数文件系统都允许创建长度为零的文件,即使磁盘上没有可用块,因为此时不需要分配任何块,除非目录条目的块已满在这种情况下,当它尝试将新块添加到目录列表时,您将收到“无空间”错误。当然,NTFS 会这样工作。一些文件系统允许将小文件的内容存储在目录条目本身或其他预分配的结构中 - 因此您可能能够在看似已满的文件系统上创建小但长度不为零的文件。
一些较旧的文件系统(FAT*?)将始终在创建时分配文件的第一个块,因为它们的规范不允许没有分配块的文件,因此这些文件始终无法在完整设备上创建文件。
答案2
是的,因为当您创建没有数据的文件时,它仅驻留在主文件表 (MFT) 中。如果文件为 1 KB 或更少,则它仅存在于 MFT 中。磁盘可能会报告没有可用空间,但 MFT 可能有足够的可用空间来创建文件。