首页 > 程序开发 > PHP > PHP 非递归实现查询该目录下所有文件
2014
12-12

PHP 非递归实现查询该目录下所有文件

方法一

/**
 * PHP 非递归实现查询该目录下所有文件
 * @param unknown $dir
 * @return multitype:|multitype:string
 */
function scanfiles($dir) {
	if (! is_dir ( $dir ))
		return array ();
	
	// 兼容各操作系统
	$dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/';
	
	// 栈,默认值为传入的目录
	$dirs = array ( $dir );
	
	// 放置所有文件的容器
	$rt = array ();
	
	do {
		// 弹栈
		$dir = array_pop ( $dirs );
		
		// 扫描该目录
		$tmp = scandir ( $dir );
		
		foreach ( $tmp as $f ) {
			// 过滤. ..
			if ($f == '.' || $f == '..')
				continue;
			
			// 组合当前绝对路径
			$path = $dir . $f;
			
			
			// 如果是目录,压栈。
			if (is_dir ( $path )) {
				array_push ( $dirs, $path . '/' );
			} else if (is_file ( $path )) {		// 如果是文件,放入容器中
				$rt [] = $path;
			}
		}
		
	} while ( $dirs );	// 直到栈中没有目录
	
	return $rt;
}

方法二:
注:需要PHP5.3版本以上,只是获取当前目录下的所有文件(夹)


$path = realpath($path);
$flag = FilesystemIterator::KEY_AS_FILENAME;
$glob = new FilesystemIterator($path,  $flag);

foreach ($glob as $name => $file) {
    echo '文件名:'.$name.'--文件路径:'.$file.'<br/>';
}

最后编辑日期:
作者:uuling
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。