我有一个简单的问题。
当我们创建文件时,让我们说“abc.txt”并将其留空。
操作系统将显示文件大小为 0 字节,占用磁盘空间为 0 字节。
如果我们将这些 0 字节文件中的 100 个保存到一个文件夹中,操作系统也会说该文件夹的总大小为 0 字节。
这听起来合乎逻辑,因为文件中没有任何内容。但是这些文件不应该在存储设备中占用至少几个字节吗?
毕竟,我们把它保存在某个地方并给它起了个名字。文件名和可能的其他一些标题至少不应该占用一些空间吗?
不,它们仍然在文件系统上占用几个字节。否则我会实现一个神奇的文件系统,将文件名中编码的所有内容存储在空文件中。
从技术上讲,它归结为定义问题。 “文件大小”指的是文件内容的大小,或者它指的是它在底层文件系统上的可用字节数方面的“差异”(即,文件的大小内容(四舍五入到最接近的块或簇大小)+ 用于它的字节inode)。
传统上,这些详细信息存储在所谓的
File Allocation Table
(在Windows FAT上下文中交谈)中。它们是在我们格式化硬盘时创建的。为它分配了一些预定义的空间。我认为它的大小不会改变。
例如,您格式化一个 100 GB 的硬盘,只有 90+ GB 可供您使用。文件系统使用其他空间来管理/记住保存在硬盘驱动器上的每个文件/文件夹以及保存位置。
它们存在于磁盘上的事实意味着已经为它们创建了一条记录,这当然需要一定量的内存。 0 字节仅对应于四舍五入到 UI 中显示的粒度的文件的逻辑大小,但即便如此,它也可能包含一个文件头,这将取决于文件格式。