Heim > Backend-Entwicklung > PHP-Tutorial > 列出指定目录下所有文件的PHP代码?

列出指定目录下所有文件的PHP代码?

WBOY
Freigeben: 2016-06-23 14:10:32
Original
947 Leute haben es durchsucht

比如说我用代码只能列出当前目录的文件及目录。 
bak
1.php
1.txt
123
........
但是我发现了 我是要bak文件夹下的文件。(bak目录的绝对路径和相对路径都是已知的。)
请赐代码 本人不太懂得写代码.


回复讨论(解决方案)

你写的不对,当然就不行

function get_files($dir){	$files = array();	if(is_dir($dir)){		if($dh = opendir($dir)){			while (($file = readdir($dh)) !== false) {				if(!($file == '.' || $file == '..')){					$file = $dir.'/'.$file;					if(is_dir($file) && $file != './.' && $file != './..'){						$files = array_merge($files, get_files($file));					}					else if(is_file($file)){						$fullpath = $_SERVER['HTTP_REFERER'];						$fullpath = str_replace(basename($fullpath),"",$fullpath);						$fullpath .= substr($file,2);						$files[] = $fullpath;					}				}			}		}	}	return $files;}
Nach dem Login kopieren


使用方法
$path = '../bak';
foreach(get_files($path) as $allfile){
echo $allfile.'
';
}

使用迭代器,既简单又迅速

$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

既然用迭代器,就不用判断isdir那么麻烦,默认就是leaves only的

$items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));foreach($items as $itemName => $item) echo (string)$itemName, '<br />', PHP_EOL;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren


使用迭代器,既简单又迅速
$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

csdn总算能看到引用的代码了……呵呵

我是来学习的

既然用迭代器,就不用判断isdir那么麻烦,默认就是leaves only的

$items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));foreach($items as $itemName => $item) echo (string)$itemName, '<br />', PHP_EOL;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren



使用迭代器,既简单又迅速
$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
太犀利了!

是吗?
像 app/Admin/.. 这样的不是也输出了吗?
倒是只判断 isDir() 就可以只输出文件名了

既然用迭代器,就不用判断isdir那么麻烦,默认就是leaves only的

$items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));foreach($items as $itemName => $item) echo (string)$itemName, '<br />', PHP_EOL;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren



使用迭代器,既简单又迅速
$path = '目录名';$ite = new RecursiveDirectoryIterator($path);foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {  $fn = $cur->getBasename();  if($cur->isDir() || ($fn == '.' || $fn == '..')) continue;  echo $filename, '<br />';}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

没有一个可以 继续等完整代码中。。。。。。

php文档内说的递归器就是默认去枝留叶方式,要输出节点应转换参数,如果有输出dir名那就不清楚是否未完善的bug

是吗?
像 app/Admin/.. 这样的不是也输出了吗?
倒是只判断 isDir() 就可以只输出文件名了

说一些有用的东西吧~!继续等完整代码中。。。。。。 

真奇了怪了!
你说说上面那段代码没有用?

超出想象,难道不懂怎么赋值给$path还是不懂从返回中提取?

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage