이 기사에서는 PHP 애플리케이션 개발의 일반적인 작업 : 파일 및 디렉토리 나열에 대해 설명합니다. 우리는 몇 가지 기본 및 고급 솔루션을 소개하고 장단점을 분석 할 것입니다. 먼저 기본 PHP 기능을 사용하는 세 가지 방법을 소개 한 다음 점차 강력한 SPL ITERATOR를 활용하는 방법으로 전환합니다. 논의를 위해, 우리는 디렉토리 구조가 다음과 같다고 가정합니다.
키 포인트
<code>---manager | ---user | ---document.txt | ---data.dat | ---style.css |---article.txt |---master.dat |---script.php |---test.dat |---text.txt</code>
glob()
및 opendir()
는 더 큰 유연성을 제공하지만 더 많은 장황한 코드와 사후 필터링이 필요합니다. readdir()
함수는 또한 사후 필터링이 필요하지만 파일 핸들을 관리 할 필요는 없습니다. 객체 지향 방법의 경우 SPL 라이브러리를 사용해야합니다. closedir()
를 사용하여 동일한 기능을 달성 할 수 있습니다. scandir()
RecursiveDirectoryIterator
GlobIterator
usage glob()
opendir()
(필수) : 검색 모드 readdir()
(선택 사항) : 공식 문서에 나열된 하나 이상
closedir()
scandir()
가 표시되면 출력은 다음과 같습니다
GlobIterator
"TE"로 시작하는 파일 및 디렉토리 목록을 원한다면 작성하려는 코드는 다음과 같습니다.
RegexIterator
<code>---manager | ---user | ---document.txt | ---data.dat | ---style.css |---article.txt |---master.dat |---script.php |---test.dat |---text.txt</code>
상수를 선택적 두 번째 매개 변수로 사용합니다. 보시다시피, GLOB_ONLYDIR
라는 파일은 제외됩니다. master.dat
glob()
사용 및
opendir()
, readdir()
및 기능과 관련이 있습니다. readdir()
closedir()
의 값을 출력하면 때때로 이상한 항목이 포함되어 있습니다. 파일 시스템의 각 디렉토리에서 찾을 수있는 두 가지 가상 디렉토리입니다. 그들은 각각 현재 디렉토리와 부모 디렉토리 (이전 폴더)를 나타냅니다. 두 번째 예제는 주어진 경로에 포함 된 파일 만 검색하는 방법을 보여줍니다. opendir()
readdir()
false
closedir()
usage glob()
glob()
기능을 소개하고 싶습니다. 필수 매개 변수는 하나뿐입니다 : 읽을 경로. 리턴 값은 경로에 포함 된 다양한 파일 및 디렉토리 배열입니다. 마지막 솔루션과 마찬가지로 파일 및 디렉토리의 하위 집합을 검색하려면 사후 필터를 직접 수행해야합니다. 반면, 아래 코드에서 볼 수 있듯이이 솔루션은 더 간단하고 파일 핸들을 관리 할 필요가 없습니다. 이 예제는 문자열 "TE"로 시작하는 파일 및 디렉토리를 검색하는 방법을 보여줍니다.<code>---manager | ---user | ---document.txt | ---data.dat | ---style.css |---article.txt |---master.dat |---script.php |---test.dat |---text.txt</code>
readdir()
및 의 사용을 보여줄 것이다. 첫 번째는 에서 상속되고, 다른 것들은 에서 물려받습니다. 그들은 모두 동일한 생성자를 가지며 두 개의 매개 변수 만 있습니다.
FilesystemIterator
(필수) : 파일 시스템 프로젝트의 경로는 readdir()를 반복합니다.
(선택 사항) : 공식 문서에 나열된 하나 이상
FilesystemIterator
filesize()
fileowner()
FilesystemIterator
RecursiveDirectoryIterator
를 사용하는 것은 매우 간단합니다. 그것이 어떻게 실용적인지 보여주기 위해 두 가지 예를 보여 드리겠습니다. 첫 번째 예에서는 문자열 "TE"로 시작하는 모든 파일과 디렉토리를 검색하는 반면 두 번째 예제는 다른 반복자 GlobIterator
를 사용하여 모든 "t.dat"또는 "t. 파일 및 디렉토리를 검색합니다. PHP”. DirectoryIterator
FilesystemIterator
위 코드를 사용하면 결과는 이전 예제와 동일합니다. <of>를 사용하는 두 번째 예는 다음과 같습니다
이 경우 출력은 다음과 같습니다<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><code>---manager
|
---user
| ---document.txt
| ---data.dat
| ---style.css
|---article.txt
|---master.dat
|---script.php
|---test.dat
|---text.txt</code></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<h3> <code>RecursiveDirectoryIterator
는 파일 시스템 디렉토리를 재귀 적으로 반복하기위한 인터페이스를 제공합니다. 대상으로 인해 및 와 같은 유용한 방법이 있으며, 이는 현재 항목 (디렉토리 인 경우)과 현재 항목이 디렉토리인지 여부에 대한 반복기를 반환합니다. 및 RecursiveDirectoryIterator
의 실제 적용을 보여 주려면 마지막 예제를 다시 작성하여 동일한 결과를 얻을 것입니다. getChildren()
hasChildren()
RecursiveDirectoryIterator
getChildren()
<?php $filelist = glob("*.txt");
GlobIterator
GlobIterator
<<> 기능은 필터링을 허용하는 한 줄 솔루션이지만 그다지 유연하지는 않습니다. glob()
GlobIterator
, <🎜 🎜> 및
<code>array ( 0 => 'article.txt', 1 => 'text.txt' )</code>
glob()
opendir()
php readdir()
를 사용하는 파일 및 디렉토리 나열에 대한 FAQS (FAQ)
closedir()
scandir()
is_dir()
scandir()
scandir()
scandir()
및 filesize()
기능을 사용할 수 있습니다. 이러한 기능을 사용하면 오류보고 수준을 설정하고 오류가 발생할 때 호출 될 사용자 정의 오류 처리기 기능을 정의 할 수 있습니다. scandir()
위 내용은 PHP 마스터 | PHP와 함께 파일 및 디렉토리를 나열합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!