php遍历文件夹是先文件夹还是文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php遍历文件夹是先文件夹还是文件相关的知识,希望对你有一定的参考价值。
php获取目录中的所有文件,PHP遍历一个文件夹下以及子文件夹下的所有文件
/*** http://www.cent123.com/thread-13-1-1.html
* 获取目录中所有文件的路径
* @param $dir
* @return array
*/
function my_scandir1($dir)
$files = array();
$dir = str_replace("\\\\", "/", $dir);
$path = $dir;
$dir_list = scandir($dir);
foreach ($dir_list as $file)
if ($file != ".." && $file != ".")
if (is_dir($dir . "/" . $file))
$files[$file] = my_scandir1($dir . "/" . $file);
$path .= $file;
else
$files[] = $path . '/' . $file;
return $files;
PHP获取目录中的所有文件,PHP遍历一个文件夹下以及子文件夹下的所有文件
参考技术A 顺序往下啊,遇到文件夹递归,遇到文件添加到结果集 参考技术B 遍历当然用递归了,遇到文件夹就调用自身。如何用PHP遍历文件数目 或删除目录下的全部文件?
先说一下基础知识:
文件位置如下图所示:
1、判断是文件还是目录
var_dump(filetype("./aa/bb/cc.txt"));
输出: string(4) "file"
var_dump(filetype("./aa"));
输出: string(3) "dir"
2、判断是否是文件(是返回ture)
var_dump(is_file("./aa"));
输出bool(false)
3、判断是否是目录(是返回ture)
var_dump(is_dir("./aa"));
输出: bool(true)
4、文件的访问、创建与修改时间
echo date("Y-m-d H:i:s",fileatime("./aa")); //文件的上次访问时间 filectime("./aa.txt"); //文件的创建时间 echo date("Y-m-d H:i:s",filemtime("./aa.txt")); //文件的修改时间
5、获取文件大小
filesize("./aa.txt");
6、判断文件是否存在
file_exists("./aa.txt")
7、服务器的根目录
echo $_SERVER[\'DOCUMENT_ROOT\'];
输出:D:/phpStudy/WWW
注意:/代表根,在网页里面代表www目录,在PHP里面代表磁盘根
8、路径
echo basename("./aa/bb/cc.txt"); //获取路径中的文件名 echo dirname("../0508/DB.class.php"); //获取路径中的文件夹目录 var_dump(pathinfo("../0508/DB.class.php")); //获取路径信息 echo realpath("./aa/bb/cc.txt"); //将相对路径转化成绝对路径
依次输出:
cc.txt
../0508
array(4) { ["dirname"]=> string(7) "../0508" ["basename"]=> string(12) "DB.class.php" ["extension"]=> string(3) "php" ["filename"]=> string(8) "DB.class" }
D:\\phpStudy\\WWW\\2017-05\\0519\\aa\\bb\\cc.txt
9.目录操作
mkdir("./aa"); //创建目录 rmdir("./aa"); //删除目录,目录必须为空 rename("./test","../ceshi"); //移动目录
第一种遍历目录:
var_dump(glob("./aa/bb/*.txt")); //获取目录下所有文件
输出:
array(6) {
[0]=>
string(14) "./aa/bb/cc.txt"
[1]=>
string(14) "./aa/bb/dd.txt"
[2]=>
string(14) "./aa/bb/ee.txt"
[3]=>
string(14) "./aa/bb/ff.txt"
[4]=>
string(14) "./aa/bb/gg.txt"
[5]=>
string(14) "./aa/bb/hh.txt"
}
第二种遍历目录:(重要)
//打开目录,返回目录资源 $dname = "./aa/bb"; $dir = opendir($dname); //从目录资源里面读文件,每次读一个 while($fname = readdir($dir)) { echo $dname."/".$fname."<br>"; } //关闭目录资源 closedir($dir);
输出:
./aa/bb/.
./aa/bb/..
./aa/bb/cc.txt
./aa/bb/dd.txt
./aa/bb/ee.txt
./aa/bb/ff.txt
./aa/bb/gg.txt
./aa/bb/hh.txt
10、文件整体操作
touch("./aa.txt"); //创建文件 copy("./aa.txt","../aa.txt"); //复制文件 unlink("./aa.txt"); //删除文件
11、文件内容操作
echo file_get_contents("http://www.baidu.com"); //读取文件 file_put_contents("./aa/bb/hh.txt","hello"); //写内容 readfile("./11.txt"); //读取并输出 var_dump(file("11.txt")); //读取文件内容,返回数组,每行是一个元素
//打开文件 $f = fopen("./11.txt","a"); //打开文件并写入 fwrite($f,"wwwww"); //关闭文件 fclose($f);
其中:r只读;r+读写;w写清空;w+读写;a写入文件末尾;a+读写;x创建并以写入打开;x+创建并以读写打开;加一个b代表可操作二进制文件(建议加)
利用遍历来计算文件夹下所有的个数
<?php echo fileCount("./qiyezhan"); function fileCount($fname) { //该文件夹下所有文件数量 $sum = 0; //判断给的是不是文件夹 if(is_dir($fname)) { //打开文件夹 $dir = opendir($fname); while($wenjian = readdir($dir)) { if($wenjian!="." &&$wenjian!="..") { //文件的完整路径 $furl = $fname."/".$wenjian; if(is_file($furl)) { $sum++; } else if(is_dir($furl)) { //获取该文件夹下文件数量,累加 $sum = $sum + fileCount($furl); } } } //关闭文件夹 closedir($dir); return $sum; } else { echo "给的文件夹不对"; } } ?>
利用遍历删除全部文件
<?php ShanChu("./qiyezhan"); function ShanChu($fname) { if(is_dir($fname)) { //在删除之前,把里面的文件全部删掉 $dir = opendir($fname); while($dname = readdir($dir)) { //必须加这一项,不然可能会将整个磁盘给删掉 if($dname!="." && $dname!="..") { $durl = $fname."/".$dname; if(is_file($durl)) { unlink($durl); } else { ShanChu($durl); } } } closedir($dir); //删除该文件夹 rmdir($fname); } else { //如果是文件,直接删掉 unlink($fname); } } ?>
以上是关于php遍历文件夹是先文件夹还是文件的主要内容,如果未能解决你的问题,请参考以下文章