SYNCERのロゴ
アイキャッチ画像

ディレクトリのファイルを一覧で取得する方法

指定したディレクトリ内にある、全てのファイル名やファイルパスを取得します。まとめて読み込みたい場合などに便利です。

サンプルコード

$dirに対象のディレクトリのパスを指定して下さい。

そのディレクトリ内のみを取得

そのディレクトリにあるファイルのみを取得します。ディレクトリ内のディレクトリは無視されます。

<?php
	// ディレクトリのパス
	$dir = "/var/www/" ;

	if( is_dir( $dir ) && $handle = opendir( $dir ) ) {
		while( ($file = readdir($handle)) !== false ) {
			if( filetype( $path = $dir . $file ) == "file" ) {
			  // $file: ファイル名
			  // $path: ファイルのパス
			}
		}
	}

再帰的に取得

そのディレクトリ内だけではなく、深い階層にあるファイルも再帰的に取得します。

<?php
	// ディレクトリのパス
	$dir = "/var/www/" ;

	$check_dirs = [ $dir ] ;
	$file_paths = [] ;

	while( $check_dirs ) {
		$dir_path = $check_dirs[0] ;

		if( is_dir ( $dir_path ) && $handle = opendir ( $dir_path ) ) {
			while( ( $file = readdir ( $handle ) ) !== false ) {
				if( in_array ( $file, [ ".", ".." ] ) !== false ) continue ;
				$path = rtrim ( $dir_path, "/" ) . "/" . $file ;

				if ( filetype ( $path ) === "dir" ) {
					$check_dirs[] = $path ;
				} else {
					// $file: ファイル名
					// $path: ファイルのパス
				}
			}
		}

		array_shift( $check_dirs ) ;
	}

デモ

そのディレクトリ内のみを取得

<?php
	// ディレクトリのパス
	$dir = "/var/www/icons/" ;

	if( is_dir( $dir ) && $handle = opendir( $dir ) ) {
		while( ($file = readdir($handle)) !== false ) {
			if( filetype( $path = $dir . $file ) == "file" ) {
			  // $file: ファイル名
			  // $path: ファイルのパス
				echo $file . " (" . $path . ")" . "\n" ;
			}
		}
	}
patch.gif (/var/www/icons/patch.gif)
comp.blue.gif (/var/www/icons/comp.blue.gif)
binary.gif (/var/www/icons/binary.gif)
odf6ots.png (/var/www/icons/odf6ots.png)
broken.gif (/var/www/icons/broken.gif)
comp.gray.png (/var/www/icons/comp.gray.png)

再帰的に取得

/var/www/icons/だけでなく、深い階層にある/var/www/icons/small/のファイルも取得しています。

<?php
	// ディレクトリのパス
	$dir = "/var/www/icons/" ;

	$check_dirs = [ $dir ] ;
	$file_paths = [] ;

	while( $check_dirs ) {
		$dir_path = $check_dirs[0] ;

		if( is_dir ( $dir_path ) && $handle = opendir ( $dir_path ) ) {
			while( ( $file = readdir ( $handle ) ) !== false ) {
				if( in_array ( $file, [ ".", ".." ] ) !== false ) continue ;
				$path = rtrim ( $dir_path, "/" ) . "/" . $file ;

				if ( filetype ( $path ) === "dir" ) {
					$check_dirs[] = $path ;
				} else {
					// $file: ファイル名
					// $path: ファイルのパス
					echo $file . " (" . $path . ")" . "\n" ;
				}
			}
		}

		array_shift( $check_dirs ) ;
	}
patch.gif (/var/www/icons/patch.gif)
comp.blue.gif (/var/www/icons/comp.blue.gif)
binary.gif (/var/www/icons/binary.gif)
odf6ots.png (/var/www/icons/odf6ots.png)
broken.gif (/var/www/icons/broken.gif)
comp.gray.png (/var/www/icons/comp.gray.png)
patch.gif (/var/www/icons/small/patch.gif)
binary.gif (/var/www/icons/small/binary.gif)
generic2.gif (/var/www/icons/small/generic2.gif)
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月22日 (木)
コンテンツを公開しました。