目录与文件的基本操作一 (44)

WBOY
Freigeben: 2016-08-08 09:23:05
Original
944 Leute haben es durchsucht

解析目录路径

使用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] )
??给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以suffix结束的,那这一部分也会被去掉。
??dirname--返回路径中的目录部分
??语法:string dirname( string path )
??给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
$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() 返回一个联合数组包含有path的信息。包括以下的数组单元:dirname,basename和extension。
$path_parts= pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n"; // /www/htdocs
echo $path_parts["basename"] . "\n"; // index.html
echo $path_parts["extension"] . "\n"; // html
?>
??realpath--返回规范化的绝对路径名
??语法:string realpath( string path )
??realpath() 扩展所有的符号连接并且处理输入的path中的'/./', '/../' 以及多余的'/' 并返回规范化后的绝对路径名。返回的路径中没有符号连接,'/./' 或'/../' 成分。

遍历目录

opendir--打开目录句柄
??语法:resource opendir( string path [, resource context] )
??打开一个目录句柄,可用于之后的closedir(),readdir()和rewinddir()调用中。
??readdir--从目录句柄中读取条目
??语法:string readdir( resource dir_handle)
??返回当前目录指针位置的文件名,没有返回false,并将指针向下移动一位。文件名以在文件系统中的排序返回。
??closedir--关闭目录句柄
??语法:void closedir( resource dir_handle)
??关闭由dir_handle指定的目录流。流必须之前被opendir()所打开。
??rewinddir--倒回目录句柄
??语法:void rewinddir( resource dir_handle)
??将dir_handle指定的目录流重置到目录的开头。

统计目录大小

??disk_free_space--返回目录中的可用空间
??语法:float disk_free_space( string directory )
??给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。
??disk_total_space--返回一个目录的磁盘总大小
??语法:float disk_total_space( string directory )
??给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。

例子

<?php <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>将目录字节换为“KB”单位</span>?>
Nach dem Login kopieren

建立与删除目录

mkdir--新建目录
??语法:boolmkdir(string pathname [,intmode])
??尝试新建一个由pathname指定的目录。
??rmdir--删除目录
??语法:boolrmdir( string dirname)
??尝试删除dirname所指定的目录。该目录必须是空的,而且要有相应的权限。如果成功则返回TRUE,失败则返回FALSE。
??unlink--删除文件
??语法:boolunlink ( string filename )
??删除filename。和Unix C 的unlink() 函数相似。如果成功则返回TRUE,失败则返回FALSE

<?php <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>?>
Nach dem Login kopieren

复制与移动目录

copy--拷贝文件
??语法:boolcopy ( string source, string dest)
??将文件从source拷贝到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>?>
Nach dem Login kopieren

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教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!