>백엔드 개발 >PHP 문제 >PHP에서 디렉토리의 모든 내용을 얻는 방법

PHP에서 디렉토리의 모든 내용을 얻는 방법

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-06-01 17:23:122282검색

이 글에서는 PHP를 사용하여 디렉토리의 모든 내용을 가져오는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP에서 디렉토리의 모든 내용을 얻는 방법

이번에는 SPL 라이브러리의 디렉토리 반복자를 소개하겠습니다. 그 기능은 이름에서 알 수 있듯이 지정된 디렉토리의 모든 내용을 얻는 것입니다. 이전에는 디렉터리와 디렉터리에 있는 모든 파일을 얻기 위해 디렉터리를 순회해야 했으며 이는 일반적으로 재귀 순회가 필요했습니다. 솔직히 말해서 이 코드를 직접 작성하는 것은 꽤 번거롭기 때문에 PHP는 다음과 같은 내장 세트를 준비했습니다. 지정된 디렉터리에 들어갈 때 해당 디렉터리의 모든 하위 디렉터리와 파일의 내용을 직접 반환합니다. 물론, 나무 모양이 아니고, 순서도 확실하지 않습니다. 나무 모양으로 정리하려면 직접 처리해야 합니다.

더 이상 고민하지 않고 코드를 살펴보겠습니다.

$path = $argv[1];

// 获取目录下所有内容
$dirs = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);

foreach($dirs as $k=>$d){
    echo 'key:'. $k, PHP_EOL;
    if($d->isDir()){
        echo $d->getPathname(), PHP_EOL;
    }else{
        echo $d->getFilename(), PHP_EOL;
    }
}

//执行 php PHP获取目录中的全部内容RecursiveDirectoryIterator.php ../

// key:../.
// ../.
// key:../..
// ../..
// key:../source
// ../source
// key:../source/.
// ../source/.
// key:../source/..
// ../source/..
// key:../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// key:../source/PHP大文件读取操作.php
// PHP大文件读取操作.php
// key:../PHP大文件读取操作.md
// PHP大文件读取操作.md
// key:../PHP获取目录中的全部内容RecursiveDirectoryIterator.md
// PHP获取目录中的全部内容RecursiveDirectoryIterator.md

실제로는 한 줄의 코드일 뿐이며 직접 루프를 실행하여 반복자를 출력합니다. 결과에서 우리는 먼저 소스 디렉터리에 들어간 다음 외부 파일 내용을 순회하여 디렉터리와 파일 이름의 순서로 디렉터리에 있는 모든 콘텐츠를 얻는 것을 볼 수 있습니다. 재귀함수를 직접 작성하는 것보다 훨씬 편리하지 않나요?

디렉토리에 있는 모든 PHP 파일을 가져와서 전체 파일 크기를 계산하려면 어떻게 해야 합니까? 이 반복자 작업 세트를 사용하면 이전 반복자 콘텐츠를 필터링하기 위해 일반 반복자만 추가하면 됩니다.

// 获取所有php文件
$regIts = new RegexIterator($dirs, '/^.+\.php$/i');
$fileSize = 0;
foreach($regIts as $k=>$p){
    echo $p->getSize() . ' ' .  $k, PHP_EOL;
    $fileSize += $p->getSize();
}
echo 'Total ', $fileSize, PHP_EOL;

// 622 ../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// 869 ../source/PHP大文件读取操作.php
// Total 1491

ls -l처럼 느껴지므로 디렉터리에서 관련 작업을 수행할 수 있습니다. . 이 클래스의 사용은 여기에서 간략하게 소개됩니다. SPL 라이브러리에는 우리가 탐색할 가치가 있는 많은 기능이 있습니다. 우아한 프로그래밍 능력을 지속적으로 향상시키기 위해 천천히 배우고 천천히 연습하세요.

테스트 코드:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/PHP%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%85%A8%E9%83%A8%E5%86%85%E5%AE%B9RecursiveDirectoryIterator.php

추천 학습: php 비디오 튜토리얼

위 내용은 PHP에서 디렉토리의 모든 내용을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제