php列出目录下所有文件(包括子目录)

顺便输出到一个文件中... 顺便输出到一个文件中 展开
 我来答
莘赡05V
推荐于2017-10-02 · 知道合伙人软件行家
莘赡05V
知道合伙人软件行家
采纳数:1397 获赞数:3710
毕业安徽理工大学

向TA提问 私信TA
展开全部
<?php
 
/**
 * Goofy 2011-11-30
 * getDir()去文件夹列表,getFile()去对应文件夹下面的文件列表,二者的区别在于判断有没有“.”后缀的文件,其他都一样
 */
 
//获取文件目录列表,该方法返回数组
function getDir($dir) {
    $dirArray[]=NULL;
    if (false != ($handle = opendir ( $dir ))) {
        $i=0;
        while ( false !== ($file = readdir ( $handle )) ) {
            //去掉"“.”、“..”以及带“.xxx”后缀的文件
            if ($file != "." && $file != ".."&&!strpos($file,".")) {
                $dirArray[$i]=$file;
                $i++;
            }
        }
        //关闭句柄
        closedir ( $handle );
    }
    return $dirArray;
}
 
//获取文件列表
function getFile($dir) {
    $fileArray[]=NULL;
    if (false != ($handle = opendir ( $dir ))) {
        $i=0;
        while ( false !== ($file = readdir ( $handle )) ) {
            //去掉"“.”、“..”以及带“.xxx”后缀的文件
            if ($file != "." && $file != ".."&&strpos($file,".")) {
                $fileArray[$i]="./imageroot/current/".$file;
                if($i==100){
                    break;
                }
                $i++;
            }
        }
        //关闭句柄
        closedir ( $handle );
    }
    return $fileArray;
}
 
//调用方法getDir("./dir")……
?>
活宝zxcvbnmkj
2014-12-17
知道答主
回答量:5
采纳率:0%
帮助的人:2.7万
展开全部
1、列出当前目录的文件、文件夹完整路径
ls -1
|awk '{print i$0}' i=`pwd`'/' (注意:这里 ls 后面那是个数字 1 而不是字母
l)

2、列出当前目录及子目录的文件、文件夹完整路径
ls -R
|awk '{print i$0}' i=`pwd`'/'

2b)
列出当前目录及子目录下的文件夹完整路径
ls
-FR | grep /$ | sed "s:^:`pwd`/:"

3、用find实现,好像运行要慢些
find
/ -name "*.*" -exec ls {} \;

4、递归列出当前目录及子目录名称
ls
-FR | grep /$

5、递归列出当前目录及子目录名称,包括相关属性
ls
-lR | grep "^d"
#
drwxr-xr-x 3 idea idea 4096 Aug 2 2009 images

6、只列出当前目录下的子目录

用ls只列出子目录
ls
-d */
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ealson
2014-12-19 · TA获得超过173个赞
知道小有建树答主
回答量:107
采纳率:100%
帮助的人:74万
展开全部
空上没有函数可以直接列出的,一般叫么调用系统命令 tree 然后tree返回的是一段目录树文本,自己用字符串函数处理一下得到所有文件和目录。但是tree并不是所有linux发行版都有的命令,有些是没这命令的。

最可靠方法使用目录递归,我这里写了一个函数,你可以参考。是把目录下包括子目录的所有文件和路径 列出来到数组里的,你如有其它需要可以改改:
函数复制到你的代码 里,然后调用时只需要传你要递归的目录就可以了。

/**
* 目录递归函数
* @param [type] $dir [基本目录]
* @param [type] &$allfile [每次递归结果]
* @return [type] [description]
*/
function dirinfo($dir, &$allfile) {
//static $allfile = array();
if (is_dir($dir)) {

$dir = realpath($dir);

$dirhandle = opendir($dir);
while (false !== ($file = readdir($dirhandle))) {
$filename = $dir .'/'. $file;
if ($file == '.' || $file == '..' || is_link($filename)) {
continue;
}
if (is_dir($filename)) {
if (!isset($allfile)) {
$allfile = array();
}
dirinfo($filename, $allfile);
} else{
$allfile[] = $filename;
}
}
closedir($dirhandle);
}

return $allfile;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-09-10
展开全部
function scan_file($path){
$item=scandir($path);
foreach($item as $k=>$v){
if($v=='.' || $v=='..') continue;
$v=$path.'\\'.$v;
if(is_dir($v)){
scan_file($v);
}else{
echo $v."<Br/>";
}

}
}
scan_file('E:\MyPHP');
更多追问追答
追问
不行啊
追答
scan_file('你的路径');
代码是测试通过的.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-21
展开全部
function getFile($path){
foreach(scandir($path) as $file){
if($file!="." && $file!=".."){
if(is_dir($file)){
getFile($file);
}
$files[]=$file;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式