PHPプログラミング

レシピ

ファイル / ディレクトリ

パスの対象がファイル/ディレクトリであるかを確認する

ファイルかを確認するis_file関数と、ディレクトリかを確認するis_dir関数を使って、指定したパスのファイルの種類を調べる方法を解説します。

この記事のポイント

  • 対象パスがファイル、ディレクトリ、その他であるかを確認する
  • 特定のディレクトリに含まれるファイル数を数える

目次

対象パスがファイル/ディレクトリのどちらであるかを確認する

is_file関数はパスを渡すと、対象のパスがファイルであるかを確認することができます。

コード例

is_file('./test.txt');

対象パスがファイルの場合はtrueを返し、ディレクトリやシンボリックリンクなどでファイルじゃない場合にfalseを返します。

もう1つ、似たような関数で対象パスがディレクトリかを確認するis_dir関数があります。

コード例

is_dir('./graycode/');

対象パスがディレクトリの場合はtrueを返し、ディレクトリじゃない場合にfalseを返します。

使用例

is_file関数is_dir関数を使うと、特定のディレクトリに含まれるファイルとディレクトリの数をカウントすることができます。

コード例

// 対象へのパス
$path = './test/';

// 配列を初期化
$list = array(
	'dir' => array(),
	'file' => array(),
	'etc' => array()
);

// ディレクトリ内のファイル一覧を取得
$files = scandir($path);

foreach( $files as $file_name ) {

	switch( $path.$file_name) {

		// ディレクトリか確認
		case is_dir($path.$file_name):
			$list['dir'][] = $file_name;
			break;
		
		// ファイルかを確認
		case is_file($path.$file_name):
			$list['file'][] = $file_name;
			break;

		// どちらでもない(シンボリックリンクなど)
		default:
			$list['etc'][] = $file_name;
	}
}

echo 'ディレクトリの数:' . count($list['dir']) . '<br>';
echo 'ファイルの数:' . count($list['file']) . '<br>';
echo 'その他:' . count($list['etc']) . '<br>';

こちらのコードでは「test」ディレクトリにファイルとディレクトリがいくつずつ含まれるかを確認しています。

まずscandir関数で「test」ディレクトリ内のファイル一覧を取得し、foreach文で取得したファイル(またはディレクトリ)の数だけループ処理を実行します。

switch文の中でcaseとis_dir関数is_file関数を組み合わせ、該当した場合に配列へファイル名(ディレクトリ名)を追加していきます。

最後に、count関数で配列の要素数を数えて出力する流れです。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。