>  기사  >  백엔드 개발  >  디렉토리 및 파일의 기본 조작 1 (44)

디렉토리 및 파일의 기본 조작 1 (44)

WBOY
WBOY원래의
2016-08-08 09:23:05996검색

디렉터리 경로 확인

PHP 스크립트를 사용하면 디렉터리 생성, 디렉터리 순회, 디렉터리 재평가, 디렉터리 삭제 등의 디렉터리 작업을 용이하게 할 수 있습니다.
??일반적으로 사용되는 파일 디렉터리 경로 형식:
??$unixPath="/var/www/html/index.php";
//UNIX 시스템의 절대 경로는 "/ "구분된 경로를 사용해야 합니다.
??$winPath="C:\Appserv\www\index.php";
//Windows 시스템에서는 기본적으로 절대 경로가 ""로 구분되어 있습니다
??$winPath2="C :/Appserv/www/index.php";
//"/"는 Windows 시스템에서도 구분하여 사용할 수 있습니다.
??절대 경로와 상대 경로 사용에 주의하세요.

PHP 파일 경로 관련 함수

??basename--경로의 파일 이름 부분을 반환합니다

?? 구문: string basename( string path [, string suffix] )
??파일의 전체 경로가 포함된 문자열이 주어지면 이 함수는 기본 파일 이름을 반환합니다. 파일 이름이 접미사로 끝나면 이 부분도 제거됩니다.
??dirname--경로의 디렉터리 부분을 반환합니다.
?? 구문: 문자열 dirname(문자열 경로)
?? 파일의 전체 경로가 포함된 문자열이 주어지면 이 함수는 디렉터리 이름을 반환합니다. 파일 이름을 제거한 후.
$path= "/home/httpd/html/index.php";
$file= basename($path);// $file 값: "index.php"
$file= basename($path, ".php"); // $file 값: "index "
$file= dirname($path); // $file 값: "/home/httpd/html "
?>

pathinfo--파일 경로 정보를 반환합니다
?? 구문: array pathinfo( string path [, intoptions] )
??pathinfo()는 연관 배열을 반환합니다. 경로 정보. dirname, basename 및 Extension과 같은 배열 단위를 포함합니다.
$path_parts= pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] "n"; 🎜>echo $path_parts["basename"] . "n"; // index.html
echo $path_parts["extension"] . "n" // html
?>
?? realpath--정규화된 절대 경로 이름을 반환합니다
?? 구문: string realpath( 문자열 경로)
??realpath()는 모든 기호 연결을 확장하고 입력 경로에서 '/./', '/를 처리합니다. /' 및 추가 '/'를 사용하여 정규화된 절대 경로 이름을 반환합니다. 반환된 경로에는 심볼릭 링크, '/./' 또는 '/../' 구성 요소가 없습니다.

디렉터리 탐색

opendir--디렉터리 핸들 열기

?? 구문: 리소스 opendir( 문자열 경로 [, 리소스 컨텍스트] )
??디렉터리 핸들을 엽니다. 이후의closedir(), readdir() 및 rewinddir() 호출에서 사용됩니다.
??readdir--디렉터리 핸들에서 항목 읽기
?? 구문: string readdir(resource dir_handle)
??현재 디렉터리 포인터 위치에서 파일 이름을 반환하고 false를 반환하지 않고 이동합니다. 한 위치 아래로 이동하는 포인터입니다. 파일 이름은 파일 시스템에 순서대로 반환됩니다.
??closedir--디렉터리 핸들을 닫습니다.
??구문: void closeir(resource dir_handle)
??dir_handle에 지정된 디렉터리 스트림을 닫습니다. 스트림은 이전에 opendir()을 사용하여 열려 있어야 합니다.
??rewinddir--디렉터리 핸들 되감기
??구문: void rewinddir(resource dir_handle)
??dir_handle로 지정된 디렉터리 스트림을 디렉터리의 시작 부분으로 재설정합니다.

통계 디렉터리 크기

??disk_free_space--디렉토리에서 사용 가능한 공간을 반환합니다.

??구문: float disk_free_space( 문자열 디렉터리)
?? 디렉터리 문자열인 이 함수는 해당 파일 시스템이나 디스크 파티션을 기반으로 사용 가능한 바이트 수를 반환합니다.
??disk_total_space--디렉터리의 전체 디스크 크기를 반환합니다.
?? 구문: float disk_total_space( 문자열 디렉터리 )
?? 디렉터리가 포함된 문자열이 주어지면 이 함수는 해당 반환값을 기반으로 합니다. 파일 시스템이나 디스크 파티션의 총 바이트 수입니다.

<?php<span>//</span><span>自定义一个函数dirSize(),统计传入参数的目录大小</span><span>function dirSize($directory) {
$dir_size</span>=<span>0</span>;<span>//</span><span>初值为0,用来累加各文件大小从而计算目录大小</span><span>if</span>($dir_handle=@opendir($directory)){ <span>//</span><span>打开目录并判断成功打开</span><span>while</span>($filename=readdir($dir_handle)) { <span>//</span><span>循环遍历目录</span><span>if</span>($filename!=<span>"</span><span>.</span><span>"</span> && $filename!=<span>"</span><span>..</span><span>"</span>) { <span>//</span><span>排除特殊的目录</span>$subFile=$directory.<span>"</span><span>/</span><span>"</span>.$filename; <span>//</span><span>将文件和目录相连</span><span>if</span>(is_dir($subFile)) <span>//</span><span>如果为目录</span>$dir_size+=dirSize($subFile); <span>//</span><span>求子目录的大小</span><span>if</span>(is_file($subFile)) <span>//</span><span>如果是文件</span>$dir_size+=filesize($subFile); <span>//</span><span>求出文件的大小并累加</span><span>}
}
closedir($dir_handle); </span><span>//</span><span>关闭文件资源</span><span>return</span> $dir_size; <span>//</span><span>返回计算后的目录大小</span><span>}
}
$dir_size</span>=dirSize(<span>"</span><span>phpMyAdmin</span><span>"</span>); <span>//</span><span>调函数计算目录大小,返回目录大小</span>echo round($dir_size/pow(<span>1024</span>,<span>1</span>),<span>2</span>).<span>"</span><span>KB</span><span>"</span>;<span>//</span><span>将目录字节换为&ldquo;KB&rdquo;单位</span>?>
디렉토리 생성 및 삭제

mkdir--새 디렉토리

?? 구문: Boostkdir(문자열 경로 이름 [, intmode])
?? 경로명으로 지정된 새 디렉터리를 만들어 보십시오.
??rmdir--디렉터리 삭제
??구문: boolrmdir(string dirname)
??dirname으로 지정된 디렉터리를 삭제해 보세요. 디렉터리는 비어 있어야 하며 적절한 권한이 있어야 합니다. 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
??unlink--파일 삭제
??구문: boolunlink ( string filename )
??Delete filename. Unix C의 unlink() 함수와 유사합니다. 성공하면 TRUE, 실패하면 FALSE를 반환합니다.

<?php<span>//</span><span>自定义函数递归的删除整个目录</span><span>function delDir($directory) {
</span><span>if</span>(file_exists($directory)) { <span>//</span><span>判断目录是否存在,如果存在则执行</span><span>if</span>($dir_handle=@opendir($directory)){ <span>//</span><span>打开返回目录资源,并判断</span><span>while</span>($filename=readdir($dir_handle)){ <span>//</span><span>遍历目录读出目录中信息</span><span>if</span>($filename!=<span>"</span><span>.</span><span>"</span> && $filename!=<span>"</span><span>..</span><span>"</span>) { <span>//</span><span>一定要排除两个特殊目录</span>$subFile=$directory.<span>"</span><span>/</span><span>"</span>.$filename;<span>//</span><span>将目录下文件和当前目录相连</span><span>if</span>(is_dir($subFile)) <span>//</span><span>如果是目录条件则成立</span>delDir($subFile); <span>//</span><span>递归调用自己删除子目录</span><span>if</span>(is_file($subFile)) <span>//</span><span>如果是文件条件则成立</span>unlink($subFile); <span>//</span><span>直接删除这个文件</span><span>}
}
closedir($dir_handle); </span><span>//</span><span>关闭目录资源</span>rmdir($directory); <span>//</span><span>删除空目录</span><span>}
}
}
delDir(</span><span>"</span><span>phpMyAdmin</span><span>"</span>); <span>//</span><span>调用函数,将程序所在目录中phpMyAdmin文件夹删除</span>?>
디렉토리 복사 및 이동

파일 복사

?? 구문: boolcopy( 문자열 소스, string dest)
??소스에서 대상으로 파일을 복사합니다. 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
??PHP는 디렉토리 복사 및 이동 관련 기능을 제공하지 않습니다. 필요한 경우 기능을 사용자 정의하면 됩니다.

파일 기본 동작

파일 열기 및 닫기

fopen--打开文件或者URL
??语法:resource fopen( string filename, string mode [, booluse_include_path[, resource zcontext]] )
??fopen() 将filename指定的名字资源绑定到一个流上。如果filename是"scheme://..." 的格式,则被当成一个URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将filename当成一个普通的文件名继续执行下去。
??mode参数指定了所要求到该流的访问类型。
??如果也需要在include_path中搜寻文件的话,可以将可选的第三个参数use_include_path设为'1' 或TRUE。
??如果打开失败,本函数返回FALSE。
fclose--关闭一个已打开的文件指针

写入文件

fwrite--写入文件(可安全用于二进制文件)
??语法:intfwrite( resource handle, string string[, intlength] )
??fwrite() 把string的内容写入文件指针handle处。如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,视乎先碰到哪种情况。返回写入的字符数,出现错误时则返回FALSE

读取文件内容

??fread--读取文件(可安全用于二进制文件)
??string fread( inthandle, intlength )
??fread() 从文件指针handle读取最多length个字节。该函数在读取完length个字节数,或到达EOF 的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到哪种情况。

<?<span>php
$handle </span>= fopen(<span>"</span><span>http://www.example.com/</span><span>"</span>, <span>"</span><span>rb</span><span>"</span><span>);
$contents </span>= <span>""</span><span>;
</span><span>while</span> (!<span>feof($handle)) {
$contents .</span>= fread($handle, <span>8192</span><span>);
}
fclose($handle);
</span>?>

fgets--从文件指针中读取一行
??语法:string fgets( inthandle [,intlength])
??从handle指向的文件中读取一行并返回长度最多为length-1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了length -1 字节后停止(看先碰到那一种情况)。如果没有指定length,则默认为1K,或者说1024 字节。
??fgetc--从文件指针中读取字符
??语法:string fgetc( resource handle )
??返回一个包含有一个字符的字符串,该字符从handle指向的文件中得到。碰到EOF 则返回FALSE。

file--把整个文件读入一个数组中
??语法:array file ( string filename [, intuse_include_path[, resource context]] )
??和readfile()一样,只除了file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败file() 返回FALSE。
??readfile--输出一个文件
??语法:intreadfile( string filename [, booluse_include_path[, resource context]] )
??读入一个文件并写入到输出缓冲。
??返回从文件中读入的字节数。如果出错返回FALSE 并且除非是以@readfile() 形式调用,否则会显示错误信息。

以上就介绍了目录与文件的基本操作一 (44),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.