PHP 遍历文件实现代码
2018-09-07 17:40
复制代码 代码如下:
function Files($path)
{
foreach(scandir($path) as $line)
{
if($line==.$line==..) continue;
if(is_dir($path./.$line)) Files($path./.$line);
else echo <li>.$path./.$line.</li>;
}
}
PHP遍历文件及文件夹
加入给定文件夹 C:\\Windows\\AppPatch
1.首先获取这个文件夹下面的所有东西,也就是文件,文件夹,放一个数组里面
$fileArr = array(
files => array(), //文件放一个数组
dirs => array(), //文件夹放一个数组
)
2.如果存在子文件夹,遍历子文件夹,获取文件夹和文件,同样放进那个数组,如此循环,一个不漏
复制代码 代码如下:
<?php
$dir = F:\\game;
function read_dir_all($dir) {
$ret = array(dirs=>array(), files=>array());
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if($file != . && $file !== ..) {
$cur_path = $dir . DIRECTORY_SEPARATOR . $file;
if(is_dir($cur_path)) {
$ret[dirs][$cur_path] = read_dir_all($cur_path);
} else {
$ret[files][] = $cur_path;
}
}
}
closedir($handle);
}
return $ret;
}
$p = read_dir_all($dir);
echo <pre>;
var_dump($p);
echo </pre>;
?>
php遍历一个文件夹下的所有目录及文件
在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹。
这个题目有好多种解决方法。但大致思路都一样。采用递归。
复制代码 代码如下:
$path = ./filepath;
function getfiles($path)
{
if(!is_dir($path)) return;
$handle = opendir($path);
while( false !== ($file = readdir($handle)))
{
if($file != . $file!=..)
{
$path2= $path./.$file;
if(is_dir($path2))
{
echo ;
echo $file;
getfiles($path2);
}else
{
echo ;
echo $file;
}
}
}
}
print_r( getfiles($path));
echo <HR>;
function getdir($path)
{
if(!is_dir($path)) return;
$handle = dir($path);
while($file=$handle->read())
{
if($file!=. $file!=..)
{
$path2 = $path./.$file;
if(is_dir($path2))
{
echo $file.\t;
getdir($path2);
}else
{
echo $file. ;
}
}
}
}
getdir($path);
echo <HR>;
function get_dir_scandir($path){
$tree = array();
foreach(scandir($path) as $single){
if($single!=. $single!=..)
{
$path2 = $path./.$single;
if(is_dir($path2))
{
echo $single.\r\n;
get_dir_scandir($path2);
}else
{
echo $single.\r\n;
}
}
}
}
get_dir_scandir($path);
echo
<HR>;
function get_dir_glob(){
$tree = array();
foreach(glob(./curl/*) as $single){
echo $single.\r\n;
}
}
get_dir_glob();
echo
<HR>;
function myscandir($path)
{
if(!is_dir($path)) return;
foreach(scandir($path) as $file)
{
if($file!=. $file!=..)
{
$path2= $path./.$file;
if(is_dir($path2))
{
echo $file;
myscandir($path2);
}else
{
echo $file. ;
}
}
}
}
myscandir($path);
echo <HR>;
function myglob($path)
{
$path_pattern = $path./*;
foreach(glob($path_pattern) as $file)
{
if(is_dir($file))
{
echo $file;
myscandir($file);
}else
{
echo $file. ;
}
}
}
myglob($path);