English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 PHP를 사용하여 디렉토리나 폴더를 처리하는 방법을 배울 것입니다.
上一장에서 PHP를 사용하여 파일을 사용하는 방법을 배웠습니다. 마찬가지로 PHP는 파일 시스템의 디렉토리를 사용할 수도 있습니다. 예를 들어, 디렉토리를 열고 내용을 읽을 수 있으며, 디렉토리를 생성하거나 제거할 수 있으며, 디렉토리에 있는 모든 파일을 나열할 수 있는 기능도 있습니다.
PHP mkdir()를 사용하여 생성할 디렉토리의 경로와 이름을 매개변수로 호출하여 새로운 비어 있는 디렉토리를 생성할 수 있습니다. 예를 들어:
<?php //디렉토리 경로 $dir = "testdir" // 디렉토리가 존재하는지 확인합니다 if(!file_exists($dir)){ //디렉토리 생성을 시도합니다 if(mkdir($dir)){ echo "디렉토리 생성이 성공했습니다."; } else { echo "오류: 디렉토리를 생성할 수 없습니다."; } } else { echo "오류: 디렉토리가 이미 존재합니다."; } ?>
mkdir() 함수가 작동하려면 매개변수의 디렉토리 경로가 이미 존재하는 부모 디렉토리가 필요합니다. 예를 들어, 지정된 디렉토리 경로 testdir/subdir 보다 testdir 그렇지 않으면 PHP는 오류를 발생시킵니다.
PHP copy() 함수를 호출하여 파일의 소스 경로와 목표 경로를 매개변수로 파일을 하나의 위치에서 다른 위치로 복사할 수 있습니다. 목표 파일이 이미 존재하면 덮어쓰게 됩니다. 이는 백업 폴더에 "example.txt" 파일의 복사본을 생성하는 예제입니다.
<?php //소스 파일 경로 $file = "example.txt"; //목표 파일 경로 $newfile = "backup"/example.txt"; // 파일이 존재하는지 확인합니다 if(file_exists($file)){ //파일 복사를 시도합니다 if(copy($file, $newfile)){ echo "파일 복사가 성공했습니다."; } else { echo "오류: 파일 복사가 실패했습니다."; } } else { echo "오류: 파일이 존재하지 않습니다."; } ?>
이 예제가 유효하려면 이미 존재해야 합니다백업목표 디렉토리와 소스 파일 "example.txt". 그렇지 않으면 PHP는 오류를 발생시킵니다.
PHP scandir() 함수를 사용하여 지정된 경로 내의 파일과 디렉토리를 나열할 수 있습니다.
지금, 우리는 PHP 재귀를 사용하여 디렉토리 내의 모든 파일을 나열하는 기능을 만들어 보겠습니다. 깊이 있는 디렉토리 구조를 사용하는 경우 이 스크립트가 매우 유용할 것입니다.
<?php //디렉토리 내의 파일을 출력하는 함수를 정의합니다 function outputFile($path){ //디렉토리가 존재하는지 확인합니다 if(file_exists($path) && is_dir($path)){ //이 디렉토리 내의 파일을 스캔합니다 $result = scandir($path); // 현재의(.)와 상위 디렉토리(..)를 필터링합니다 $files = array_diff($result, array('.', '..')); if(count($files) > 0){ //순회하여 재조정된 배열을 표시합니다 foreach($files as $file){ if(is_file("$path")/$file"); //파일 이름 표시 echo $file . "<br>"; }) {/$file"); //디렉토리를 찾으면 해당 함수를 재귀적으로 호출합니다 outputFiles("$path",/$file"); } } } else { echo "오류: 디렉토리에서 파일을 찾을 수 없습니다."; } } else { echo "오류: 해당 디렉토리가 존재하지 않습니다."; } } //함수 호출 outputFiles("mydir"); ?>
디렉토리와 파일 구조를 처리할 때, 때로는 특정 유형의 파일을 찾아야 할 수 있습니다. 예를 들어, .text 또는 .png 파일 등을 나열하려면 PHP glob() 함수를 사용할 수 있습니다. 이 함수는 패턴에 일치하는 파일을 찾습니다.
다음 예제의 PHP 코드는 documents 디렉토리를 나열하고 .text 확장자를 가진 모든 파일을 표시합니다. 하위 디렉토리는 검색되지 않습니다.
<?php /* 디렉토리를 검색하고 순회하며 일치하는 파일을 포함한 배열을 반환합니다 */ foreach(glob("documents",/*.txt") as $file){ echo basename($file) . "(size: " . filesize($file) . " bytes)" . "<br>"; } ?>
glob() 함수는 디렉토리나 그 하위 디렉토리 내의 모든 파일을 검색할 수 있습니다. 다음 예제에서 정의된 함수는 scandir() 함수와 같이 디렉토리 내의 모든 파일을 재귀적으로 나열합니다.
<?php //디렉토리 내의 파일을 출력하는 함수 정의 function outputFile($path){ //디렉토리가 존재하는지 확인합니다 if(file_exists($path) && is_dir($path)){ // 디렉토리 내의 파일을 검색합니다 $files = glob($path ."/*); if(count($files) > 0){ //재구성된 배열을 순회합니다 foreach($files as $file){ if(is_file("$file")){ //파일 이름만 표시 echo basename($file) . "<br>"; } else if(is_dir("$file")){ //디렉토리를 찾으면 해당 함수를 재귀적으로 호출합니다 outputFiles("$file"); } } } else { echo "오류: 디렉토리에서 해당 파일을 찾을 수 없습니다."; } } else { echo "오류: 해당 디렉토리가 존재하지 않습니다."; } } //함수 호출 outputFiles("mydir"); ?>