PHP遍历目录文件是一个常见的应用场景,本文将分享几种常用方法,供大家参考。
方法一:使用dir函数
使用dir函数可以比较简单快捷地进行遍历。具体操作如下:
- 使用dir函数打开指定目录,获取目录句柄。
php
$handle = dir('/path/to/directory'); - 循环读取目录中的文件和子目录。
php
while(false !== ($entry = $handle->read())) {
// 过滤掉.和..目录
if($entry != '.' && $entry != '..') {
// 判断当前项是文件还是目录
if(is_dir("/path/to/directory/" . $entry)) {
// 是目录,进行处理
// ......
} else {
// 是文件,进行处理
// ......
}
}
} - 使用dir函数关闭目录句柄,释放资源。
php
$handle->close();
示例:
$handle = dir('/path/to/directory');
while(false !== ($entry = $handle->read())) {
if($entry != '.' && $entry != '..') {
if(is_dir("/path/to/directory/" . $entry)) {
echo $entry . '是目录。' . "\n";
} else {
echo $entry . '是文件。' . "\n";
}
}
}
$handle->close();
方法二:使用recursiveDirectoryIterator类
使用recursiveDirectoryIterator类可以递归读取目录中的所有文件和子目录。具体操作如下:
- 使用recursiveDirectoryIterator类创建迭代器对象,指定要遍历的目录。
php
$iterator = new RecursiveDirectoryIterator('/path/to/directory'); - 使用recursiveIteratorIterator类创建迭代器对象,进行递归遍历。
php
$iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST); - 循环读取迭代器中的数据,并进行处理。
php
foreach($iterator as $fileInfo) {
// 判断当前项是文件还是目录
if($fileInfo->isDir()) {
// 是目录,进行处理
// ......
} else {
// 是文件,进行处理
// ......
}
}
示例:
$iterator = new RecursiveDirectoryIterator('/path/to/directory');
$iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
foreach($iterator as $fileInfo) {
if($fileInfo->isDir()) {
echo $fileInfo->getPathname() . '是目录。' . "\n";
} else {
echo $fileInfo->getPathname() . '是文件。' . "\n";
}
}
以上两种方法都可以用来遍历目录,根据自己的需求选择适合自己的遍历方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP遍历目录文件的常用方法小结 - Python技术站