-
-
/** - * 현재 디렉터리와 하위 디렉터리의 모든 파일 가져오기
- * @param string $dir 경로 이름
- * @return array 모든 파일의 경로 배열
- */
- function get_files1($dir) {
- $files = array();
if(!is_dir($dir)) {
- return $files;
- }
- < p>$handle = opendir($dir);
- if($handle) {
- while(false !== ($file = readdir($handle))) {
- if ($file != '.' && $file != '..') {
- $filename = $dir . "/" . $file;
- if(is_file($filename)) {
- $files[] = $filename;
- }else {
- $files = array_merge($files, get_files($filename));
- }
- }
- } // 종료 동안
- closedir($handle );
- }
- return $files;
- } // 함수 종료
-
코드 복사
방법 2 , 글로브를 사용하세요
glob() 함수는 일반 쉘에서 사용하는 규칙과 유사하게 libc glob() 함수에서 사용하는 규칙에 따라 패턴과 일치하는 모든 파일 경로를 찾습니다.
약어 확장이나 매개변수 대체는 수행되지 않습니다.
일치하는 파일/디렉토리를 포함하는 배열을 반환합니다. 오류가 발생하면 FALSE를 반환합니다.
이 기능은 원격 파일에서는 작동하지 않습니다. 검사 중인 파일은 서버의 파일 시스템을 통해 액세스해야 합니다.
이 기능은 특정 디렉터리에 있는 파일을 검색하는데 사용되는 기능으로 아티팩트(artifact)라고 할 수 있습니다.
예:
-
-
- /**
- * 현재 디렉터리의 모든 파일 가져오기
- * @param string $dir 경로 이름
- * @return array 모든 파일의 경로 배열
- */
- function get_files($dir) {
- $dir = realpath($dir) . "/";
- $files = array();
if (!is_dir($dir)) {
- return $files;
- }
$pattern = $dir . "*";
- $file_arr = glob($pattern);
foreach ($file_arr as $file) {
- if (is_dir($file)) {
- $temp = get_files($file);
if (is_array($temp)) {
- $files = array_merge($files, $temp);
- }
- }else {
- $files[] = $file;
- } / / end if
- }
- return $files;
- } // 함수 종료
- ?>
-
코드 복사
방법 3, 디렉토리 클래스 사용
디렉토리를 읽기 위한 가짜 객체 지향 메커니즘입니다.
dir() 함수는 디렉토리 핸들을 열고 객체를 반환합니다. 이 객체에는 read(), rewind() 및 close()의 세 가지 메서드가 포함되어 있습니다. 그리고 두 가지 속성을 사용할 수 있습니다. 핸들 속성은 readdir(), rewinddir() 및 Closedir()과 같은 다른 디렉터리 함수에서 사용할 수 있습니다. path 속성은 열려 있는 디렉터리의 경로로 설정됩니다.
성공하면 함수는 디렉터리 스트림을 반환하고, 그렇지 않으면 false와 오류를 반환합니다. 함수 이름 앞에 "@"을 추가하면 오류 출력을 숨길 수 있습니다.
참고: 읽기 메소드가 반환하는 디렉토리 항목의 순서는 시스템에 따라 다릅니다.
참고: 이 함수는 내부 클래스 Directory를 정의합니다. 즉, 사용자 자신의 클래스를 동일한 이름으로 정의할 수 없습니다.
예:
-
-
- /**
- * 현재 지정된 디렉토리의 모든 파일을 반복적으로 표시
- * dir 함수 사용
- * @param string $dir 디렉토리 주소
- * @return array $files 파일 목록
- * @site bbs. -home.org
- */
- function get_files($dir) {
- $files = array();
if (!is_dir($dir)) {
- return $files;
- }
$d = dir($dir);
- while (false !== ($file = $d->read())) {
- if ($file != '.' && $file != '..') {
- $filename = $dir . "/" . $file;
if(is_file($filename)) {
- $files[] = $filename;
- }else {
- $files = array_merge($files, get_files($filename));
- }
- }
- }
- $d ->close();
- $files 반환;
- }
-
코드 복사
방법 4, RecursiveDirectoryIterator 클래스 사용
이 방법은 PHP 5.0부터 유효합니다
예:
-
-
- /**
- * RecursiveDirectoryIterator를 사용하여 파일을 탐색하고 모든 파일 경로 나열
- * @param RecursiveDirectoryIterator $dir은 디렉터리의 RecursiveDirectoryIterator 인스턴스를 지정합니다
- * @return 배열 $files 파일 목록
- */
- function get_files($dir) {
- $files = array();
for (; $dir->valid(); $dir->next()) {
- if ($ dir->isDir() && !$dir->isDot()) {
- if ($dir->haschildren()) {
- $files = array_merge($files, get_files($dir- >getChildren()));
- };
- }else if($dir->isFile()){
- $files[] = $dir->getPathName();
- }
- }
- return $files;
- }
$path = "/var/www";
- $dir = new RecursiveDirectoryIterator($path) ;
- print_r(get_files($dir));
-
코드 복사
|