Jack Kada Asked: 2010-01-12 01:58:24 +0800 CST2010-01-12 01:58:24 +0800 CST 2010-01-12 01:58:24 +0800 CST 在全盘上创建文件 772 是否可以在已满的磁盘上创建文件? 文件的创建是否占用任何空间? 基本上,我看到 C# 已创建但未能写入任何我认为指向完整磁盘的情况。 有谁知道在完整磁盘上创建文件是否会失败? windows windows-xp 2 个回答 Voted David Spillett 2010-01-12T02:54:09+08:002010-01-12T02:54:09+08:00 这取决于文件系统。 即使磁盘上没有空闲块,绝大多数文件系统也允许创建长度为零的文件,因为此时不需要分配块,除非目录条目的块已满,在这种情况下您将获得“没有空间”错误,因为它尝试将新块添加到目录列表中。当然 NTFS 会起作用。一些文件系统允许将小文件的内容存储在目录条目本身或其他预分配的结构中 - 因此您可能能够在看似完整的文件系统上创建小但非零长度的文件。 一些较旧的文件系统(FAT*?)将始终在创建时分配文件的第一个块,因为它们的规范不允许没有分配块的文件,因此这些文件系统总是无法在完整设备上创建文件。 Greg Askew 2010-01-12T05:49:10+08:002010-01-12T05:49:10+08:00 是的,因为当您创建一个没有数据的文件时,它只驻留在主文件表 (MFT) 中。如果文件为 1 kbyte 或更小,则仅存在于 MFT 中。磁盘可能报告没有可用空间,但 MFT 可能有足够的可用空间来创建文件。
这取决于文件系统。
即使磁盘上没有空闲块,绝大多数文件系统也允许创建长度为零的文件,因为此时不需要分配块,除非目录条目的块已满,在这种情况下您将获得“没有空间”错误,因为它尝试将新块添加到目录列表中。当然 NTFS 会起作用。一些文件系统允许将小文件的内容存储在目录条目本身或其他预分配的结构中 - 因此您可能能够在看似完整的文件系统上创建小但非零长度的文件。
一些较旧的文件系统(FAT*?)将始终在创建时分配文件的第一个块,因为它们的规范不允许没有分配块的文件,因此这些文件系统总是无法在完整设备上创建文件。
是的,因为当您创建一个没有数据的文件时,它只驻留在主文件表 (MFT) 中。如果文件为 1 kbyte 或更小,则仅存在于 MFT 中。磁盘可能报告没有可用空间,但 MFT 可能有足够的可用空间来创建文件。