3
$path = "/////////.";

echo filesize( $path );

结果是4096

这是什么……失败?这是从哪里来的4096

4

4 回答 4

6

回答:

$path = "/////////.";

虽然看起来很奇怪,但路径指的是文件系统的根目录,与/什么是目录相同。在大多数文件系统上,一个目录至少需要4096 字节来存储(硬盘的一个扇区的大小是大多数文件系统的最小分配单元)。如果该目录中存储了许多文件,则大小可以更大。但是在系统根目录中通常只有标准的系统目录,因此只有 4096。

于 2013-05-08T21:18:30.580 回答
2

您正在询问目录的文件大小,在本例中为 4,096 字节。这个数字会因目录而异,具体取决于您使用的文件系统类型以及其中有多少文件。

于 2013-05-08T21:19:06.037 回答
1

每个文件都有一个最小文件大小,因为它必须占用至少一个空间块,即使它是空的。这取决于文件系统及其设置方式,但您的默认块大小似乎是 4096 字节。因此,每个文件条目必须至少占用那么多空间。这包括目录,因为目录在技术上也是 Linux 文件系统中的文件。

于 2013-05-08T21:17:51.007 回答
1

Unix“目录”实际上只是一个文本文件,其中列出了它包含的所有“文件”的索引节点和名称。目录“文件”始终以与文件系统的块分配大小相同的大小开始 - 在您的情况下为 4096 字节。一旦该文件中列出的文件名和 inode 编号超过 4096 字节,将分配另一个块,目录文件现在将占用 8196 字节,依此类推。

于 2013-05-08T21:20:54.000 回答