我正在寻找一种方法来获取文件夹中的文件和文件夹数组,其大小和扩展名如下:
$files = array(
array("foo","txt",18), # this is foo.txt with 18 bytes
array("bar","img",513), # this is bar.ing with 513 bytes
array("baz","",345), # this is a Folder with 345 bytes inside
);
如何解决这个问题?我尝试过类似的东西:
<?php
$path = /user";
$files = array_diff(scandir($path), array('.', '..'));
#print_r($files);
?>
答案 0 :(得分:2)
您可以执行以下操作来获取目录中每个文件的数据。
foreach (new DirectoryIterator('/var/www') as $file) {
if($file->isDot()) continue;
$fileinfo[] = [
$file->getFilename(),
$file->getExtension(),
$file->getSize()
];
}
print_r($fileinfo);
请记住,目录只是指向文件列表的指针,因此如果要包含该目录的大小,也可以使用递归函数,在计算之前执行$file->isDir()
检查大小。
function getDirContentSize($path){
$size = 0;
foreach (new DirectoryIterator($path) as $file){
if($file->isDot()) continue;
$size += ($file->isDir()) ? getDirContentSize("$path/$file") : $file->getSize();
}
return $size;
}
答案 1 :(得分:0)
尝试这样的事情
$path = "/user";
$filepath = array_diff(scandir($path), array('.', '..'));
$files = array();
foreach($filepath as $k=>$v) {
$files[] =$v;
$files[] = filesize($v);
$files[] = pathinfo($v, PATHINFO_EXTENSION);
}
答案 2 :(得分:0)