Php filesize()不显示实际大小
可能重复:Php filesize()不显示实际大小,php,filesize,Php,Filesize,可能重复: 我在一个目录中有5个文件,它显示的文件大小为4096,但当我删除4个文件,只剩下1个文件时,它仍然显示相同的大小。 这就是我获取文件大小的方式 echo filesize("user_files/".$uid."/".$rs['DirectoryName']); 应用于目录的filesize不会给出目录内容的大小。它返回文件系统节点的大小,在您的示例中,该大小为4kb。此大小取决于目录中文件的数量 要获得内容的实际大小,您需要获得每个文件的大小并对其进行汇总。您可以像这样获得文件
我在一个目录中有5个文件,它显示的文件大小为4096,但当我删除4个文件,只剩下1个文件时,它仍然显示相同的大小。 这就是我获取文件大小的方式
echo filesize("user_files/".$uid."/".$rs['DirectoryName']);
应用于目录的
filesize
不会给出目录内容的大小。它返回文件系统节点的大小,在您的示例中,该大小为4kb。此大小取决于目录中文件的数量
要获得内容的实际大小,您需要获得每个文件的大小并对其进行汇总。您可以像这样获得文件夹的总大小和子目录
$dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS));
$size = 0;
foreach ( $dir as $file ) {
$size += $file->getSize();
}
var_dump($size);
还要注意
由于PHP的整数类型是有符号的,并且许多平台使用32位整数,因此对于大于2GB的文件,某些文件系统函数可能会返回意外的结果
filesize()
不会告诉您目录中所有文件的大小,只会告诉您目录本身的大小。但是如果删除3或4个文件后,文件夹的大小不是4096,那么为什么它会显示相同的大小?@Ali Hassan:因为4kb大小的目录节点可以容纳数百个文件。因此,它要么存储0个文件,要么存储100个文件——它的大小无论如何都是4kb