5个回答
展开全部
<?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")……
?>
展开全部
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 */
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 */
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
空上没有函数可以直接列出的,一般叫么调用系统命令 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;
}
最可靠方法使用目录递归,我这里写了一个函数,你可以参考。是把目录下包括子目录的所有文件和路径 列出来到数组里的,你如有其它需要可以改改:
函数复制到你的代码 里,然后调用时只需要传你要递归的目录就可以了。
/**
* 目录递归函数
* @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');
$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;
}
}
}
foreach(scandir($path) as $file){
if($file!="." && $file!=".."){
if(is_dir($file)){
getFile($file);
}
$files[]=$file;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询