【发布时间】:2011-02-11 09:56:12
【问题描述】:
是否可以从readdir() 函数中排除隐藏文件和文件夹?我有一个目录,其中有许多文件夹和一些隐藏文件夹。我想读取除隐藏文件夹之外的所有文件夹。
感谢您的帮助。
Kcssm
【问题讨论】:
-
在什么平台上以什么方式隐藏? Windows 还是 Linux?
标签: php readdir hidden-files
是否可以从readdir() 函数中排除隐藏文件和文件夹?我有一个目录,其中有许多文件夹和一些隐藏文件夹。我想读取除隐藏文件夹之外的所有文件夹。
感谢您的帮助。
Kcssm
【问题讨论】:
标签: php readdir hidden-files
如果您只想排除以点“.”开头的文件,您可以执行以下操作:
$files = readdir('/path/to/folder');
$files = array_filter($files, create_function('$a','return ($a[0]!=".");'));
这只会返回不以点“。”开头的文件
在 Windows 上,隐藏文件的工作方式不同,我不知道如何找出它们。
【讨论】:
您可以排除以“.”开头的文件和文件夹。通过使用以下代码
$ignoreList = array('cgi-bin', '.', '..', '._');
if ($directory = opendir(APPPATH . 'controllers/user')) {
while (false !== ($filename = readdir($directory))) {
if (!in_array($filename, $ignoreList) and substr($filename, 0, 1) != '.') {
echo $filename."<br>";
}
}
}
【讨论】:
使用 SPL 迭代器:DirectoryIterator + FilterIterator。
【讨论】:
您还可以使用 scandir 和 preg_grep 来隐藏所有以“.”开头的文件和文件夹。请参考下面的代码,
$dir = '/Users/Umesh/Sites/';
$files = preg_grep('/^([^.])/', scandir($dir));
print_r($files);
?>
【讨论】: