(고급) PHP 폴더 및 파일 디렉토리 조작 기능 소개

黄舟
풀어 주다: 2023-03-05 14:08:01
원래의
1563명이 탐색했습니다.

다음 텍스트:

php 폴더 작업 함수

string basename ( string path [, string suffix] )
로그인 후 복사

파일의 전체 경로가 포함된 문자열이 주어지면 이 함수는 기본 파일 이름을 반환합니다. 파일 이름이 접미사로 끝나면 이 부분도 제거됩니다.
Windows에서는 슬래시(/)와 백슬래시()를 모두 디렉터리 구분 기호로 사용할 수 있습니다. 다른 경우에는 슬래시(/)입니다.

string dirname ( string path )
로그인 후 복사

는 파일의 전체 경로가 포함된 문자열을 제공합니다. 이 함수는 파일 이름을 제거한 후 디렉터리 이름을 반환합니다.
Windows에서는 슬래시(/)와 백슬래시()를 모두 디렉터리 구분 기호로 사용할 수 있습니다. 다른 경우에는 슬래시(/)입니다.

array pathinfo ( string path [, int options] )
로그인 후 복사

pathinfo()는 경로 정보가 포함된 연관 배열을 반환합니다. 다음 배열 요소를 포함합니다: dirname, basename 및 Extension.
매개변수 옵션을 통해 반환할 단위를 지정할 수 있습니다. 여기에는 PATHINFO_DIRNAME, PATHINFO_BASENAME 및 PATHINFO_EXTENSION이 포함됩니다. 기본값은 모든 단위를 반환하는 것입니다.

string realpath(문자열 경로)

realpath()는 모든 기호 링크를 확장하고 '/./', '/../' 및 입력 경로 '의 중복 문자를 처리합니다. /' 그리고 정규화된 절대 경로 이름을 반환합니다. 반환된 경로에는 심볼릭 링크, '/./' 또는 '/../' 구성 요소가 없습니다.
realpath()는 실패할 경우(예를 들어 파일이 존재하지 않는 경우) FALSE를 반환합니다. BSD 시스템에서 경로가 존재하지 않으면 PHP는 다른 시스템처럼 FALSE를 반환하지 않습니다.

bool is_dir ( string filename )
로그인 후 복사

파일 이름이 존재하고 디렉터리이면 TRUE를 반환합니다. filename이 상대 경로인 경우 상대 경로는 현재 작업 디렉터리에 대해 확인됩니다.
참고: 이 함수의 결과는 캐시됩니다. 자세한 내용은 Clearstatcache()를 참조하세요.

resource opendir ( string path [, resource context] )
로그인 후 복사

이후의 closedir(), readdir() 및 rewinddir() 호출에서 사용할 수 있는 디렉토리 핸들을 엽니다.

string readdir ( resource dir_handle )
로그인 후 복사

디렉터리에서 다음 파일의 파일 이름을 반환합니다. 파일 이름은 파일 시스템에 순서대로 반환됩니다.

void closedir ( resource dir_handle )
로그인 후 복사

dir_handle로 지정된 디렉터리 스트림을 닫습니다. 스트림은 이전에 opendir()에 의해 열려 있어야 합니다.

void rewinddir ( resource dir_handle )
로그인 후 복사

dir_handle로 지정된 디렉터리 스트림을 디렉터리의 시작 부분으로 재설정합니다.

array glob ( string pattern [, int flags] )
로그인 후 복사

glob() 함수는 일반 쉘에서 사용하는 규칙과 유사하게 libc glob() 함수에서 사용하는 규칙에 따라 패턴과 일치하는 모든 파일 경로를 찾습니다. 약어 확장이나 매개변수 대체는 수행되지 않습니다.
일치하는 파일/디렉토리가 포함된 배열을 반환합니다. 오류가 발생하면 FALSE를 반환합니다.

유효한 태그는 다음과 같습니다.
GLOB_MARK - 반환된 각 항목에 슬래시를 추가합니다.
GLOB_NOSORT - 디렉터리에 나타나는 원래 순서대로 파일을 반환합니다(정렬되지 않음)
GLOB_NOCHECK - 파일이 일치하지 않는 경우 검색할 패턴을 반환합니다.
GLOB_NOESCAPE - 이스케이프되지 않은 백슬래시 메타 문자
GLOB_BRACE - 'a', 'b' 또는 'c'와 일치하도록 {a,b,c}를 확장합니다.
GLOB_ONLYDIR - 반환 패턴과 일치하는 디렉토리 항목만

참고: PHP 4.3.3 이전에는 Windows나 GNU C 라이브러리를 사용하지 않는 다른 시스템에서는 GLOB_ONLYDIR을 사용할 수 없었습니다.
GLOB_ERR - 오류 메시지(예: 읽을 수 없는 디렉터리)를 중지하고 읽고 기본적으로 모든 오류를 무시합니다.
참고: GLOB_ERR은 PHP 5.1에 추가되었습니다.

php 파일 디렉터리 작업

새 파일
1. 먼저 작성할 파일의 내용을 결정

$content = '你好';
로그인 후 복사


2. 파일(시스템이 자동으로 이 빈 파일을 생성합니다.)

//假设新建的文件叫file.txt,而且在上级目录下。w表示‘写文件',$fp下面要用到,表示指向某个打开的文件。
$fp = fopen('../file.txt', 'w');
로그인 후 복사

3.

//$fp告诉系统要写入的文件,写入的内容是$content
fwrite($fp, $content);
로그인 후 복사

파일에 콘텐츠 문자열을 씁니다.

fclose($fp);
로그인 후 복사


참고: PHP5는 더 편리한 file_put_contents 기능을 제공합니다. 위의 4단계는 다음과 같이 완료할 수 있습니다:

$content = '你好';
file_put_contents('file.txt',$content);
로그인 후 복사

파일 삭제

//删除当前目录下的arch目录下的文件abc.txt
unlink('arch/abc.txt');
로그인 후 복사

참고: 시스템은 작업 결과를 성공하면 TRUE로, 실패하면 FALSE로 반환합니다. 변수를 사용하여 삭제 성공 여부를 확인할 수 있습니다.

$deleteResult = unlink('arch/abc.txt');
로그인 후 복사

파일 내용 가져오기

//假设获取的目标文件名是file.txt,而且在上级目录下。获取的内容放入$content。
$content = file_get_contents('../file.txt');
로그인 후 복사

파일 콘텐츠 수정
작업 방법은 기본적으로 새 콘텐츠 생성과 동일

파일 또는 디렉터리 이름 바꾸기

//将当前目录下的子目录a下面的文件1.gif重命名为2.gif。
rename('/a/1.gif', '/a/2.gif');
로그인 후 복사

참고: 디렉토리의 경우에도 마찬가지입니다. 시스템은 작업 결과를 반환하며, 성공하면 TRUE, 실패하면 FALSE를 반환하여 이름 바꾸기 성공 여부를 알 수 있습니다.

$renameResult = rename('/a/1.gif', '/a/2.gif');
로그인 후 복사


파일이나 디렉터리를 이동하려면 이름이 바뀐 경로를 새 경로로 설정하세요.

//将当前目录下的子目录a下面的文件1.gif,移动到当前目录下的子目录b,并且重命名为2.gif。
rename('/a/1.gif', '/b/2.gif');
로그인 후 복사

그러나 디렉터리 b인 경우에는 주의하세요. 존재하지 않으면 이동이 실패합니다.

파일 복사

//将当前目录下的子目录a下面的文件1.gif,复制到当前目录下的子目录b,并命名为2.gif。
copy('/a/1.gif', '/b/1.gif');
로그인 후 복사

참고: 디렉터리에서는 이 작업을 수행할 수 없습니다.
대상 파일(위 /b/1.gif)이 이미 존재할 경우 원본 파일을 덮어쓰게 됩니다.
시스템은 작업 결과를 반환하며, 성공하면 TRUE, 실패하면 FALSE를 반환하여 복사 성공 여부를 알 수 있습니다.

$copyResult = copy('/a/1.gif', '/b/1.gif');
로그인 후 복사

파일 또는 디렉터리 이동
작업 방법은 이름 바꾸기와 동일

파일 또는 디렉터리 존재 여부

//检查上级目录下的文件logo.jpg是否存在。
$existResult = file_exists('../logo.jpg');
로그인 후 복사

참고: 파일이 시스템에 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 디렉터리에서도 동일한 작업을 수행할 수 있습니다.

파일 크기 가져오기

//获取上级目录下的文件logo.png的大小。
$size = filesize('../logo.png');
로그인 후 복사

설명: 시스템은 파일 크기를 바이트 단위로 나타내는 숫자를 반환합니다.

새 디렉토리 만들기

//在当前目录下的目录a下面新建目录b。
mkdir('/a/b');
로그인 후 복사

说明:系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否新建成功:

$mkResult = mkdir('/a/b');
로그인 후 복사

删除目录

//删除当前目录下的目录a下面的子目录b。
rmdir('/a/b');
로그인 후 복사

说明:只能删除非空的目录,否则必须先删除目录下的子目录和文件,再删除总目录
系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否删除成功:

$deleteResult = rmdir('/a/b');
로그인 후 복사

获取目录中的所有文件名
1、先打开要操作的目录,并用一个变量指向它

//打开当前目录下的目录pic下的子目录common。
$handler = opendir('pic/common');
로그인 후 복사

2、循环的读取目录下的所有文件

/*其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,
为了不陷于死循环,所以还要让$filename !== false。一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环*/
while( ($filename = readdir($handler)) !== false )  {
      3、目录下都会有两个文件,名字为'.'和‘..',不要对他们进行操作
      if($filename != "." && $filename != "..") {
      4、进行处理
      //这里简单的用echo来输出文件名
      echo $filename;
      }
}
로그인 후 복사

5、关闭目录

closedir($handler);
로그인 후 복사

对象是否是目录

//检查上级目录下的目标对象logo.jpg是否是目录。
$checkResult = is_dir('../logo.jpg');
로그인 후 복사

说明:如果目标对象是目录系统返回true,否则返回false。上面例子的$checkResult当然是false。

对象是否是文件

//检查上级目录下的目标对象logo.jpg是否是文件。
$checkResult = is_file('../logo.jpg');
로그인 후 복사

说明:如果目标对象是文件,系统返回true,否则返回false。上面例子的$checkResult当然是true。

以上就是(进阶篇)php文件夹与文件目录操作函数介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿