PHP5で導入されたDirectoryIteratorを使って、特定のディレクトリに含まれているファイル一覧を取得するコードです。
サブディレクトリのファイルを取得する方法も紹介します。
ディレクトリのファイルの一覧を取得する
//処理したいディレクトリのパス
$path = dirname(__FILE__);
$dir = new DirectoryIterator($path);
foreach ($dir as $file) {
echo $file, PHP_EOL;
}
ディレクトリやファイルのパスとファイル名を取得する
パスとファイル名を取得するにはgetPathname()メソッドを使用します。
//処理したいディレクトリのパス
$path = dirname(__FILE__);
$dir = new DirectoryIterator($path);
foreach ($dir as $file) {
echo $file->getPathname(), PHP_EOL;
}
‘.’ もしくは ‘..’を判定する
上のコードでは、’.’や’..’も含まれます。
‘.’や’..’を判定するにはisDot()メソッドを使用します。
//処理したいディレクトリのパス
$path = dirname(__FILE__);
$dir = new DirectoryIterator($path);
foreach ($dir as $file) {
//'.'と'..'は表示しない
if (!$file->isDot())
echo $file, PHP_EOL;
}
ファイルとディレクトリを判定する
ファイルかどうかを調べるにはisFile()メソッド、ディレクトリかどうかを調べるにはisDir()メソッドを使用します。
//処理したいディレクトリのパス
$path = dirname(__FILE__);
$dir = new DirectoryIterator($path);
foreach ($dir as $file) {
if ($file->isDot()) //'.'と'..'は表示しない
continue;
if ($file->isFile()) //ファイルの時
echo $file, ' is File', PHP_EOL;
if ($file->isDir()) //ディレクトリの時
echo $file, ' is Dir', PHP_EOL;
}
サブディレクトリを含めたすべてのファイルを表示する
サブディレクトリを含めたすべてのファイルを表示するサンプルプログラムです。
/**
* 指定したディレクトリとそのサブディレクトリのファイルを表示する
* @param string $path ディレクトリのパス
*/
function showFiles($path) {
$dir = new DirectoryIterator($path);
$dirs = array();
foreach ($dir as $file) {
if ($file->isDot()) //'.'と'..'は表示しない
continue;
if ($file->isDir())
$dirs[] = $file->getPathname();
if ($file->isFile())
echo $file->getPathname(), PHP_EOL;
}
//サブディレクトリのファイルを表示する
foreach ($dirs as $dir) {
showFiles($dir);
}
}
//処理したいディレクトリのパス
$path = dirname(__FILE__);
//指定したディレクトリとそのサブディレクトリのファイルを表示する
showFiles($path);