·您现在的位置: 江北区云翼计算机软件开发服务部 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> 目录与文件的基本操作一 (44)

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

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
目录与文件的基本操作一 (44)解析目录路径

使用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 )􀂾给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。<?php$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。<?php$path_parts= pathinfo("/www/htdocs/index.html");echo $path_parts["dirname"] . "\n"; // /www/htdocsecho $path_parts["basename"] . "\n"; // index.htmlecho $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//自定义一个函数dirSize(),统计传入参数的目录大小function dirSize($directory) {$dir_size=0;//初值为0,用来累加各文件大小从而计算目录大小if($dir_handle=@opendir($directory)){ //打开目录并判断成功打开while($filename=readdir($dir_handle)) { //循环遍历目录if($filename!="." && $filename!="..") { //排除特殊的目录$subFile=$directory."/".$filename; //将文件和目录相连if(is_dir($subFile)) //如果为目录$dir_size+=dirSize($subFile); //求子目录的大小if(is_file($subFile)) //如果是文件$dir_size+=filesize($subFile); //求出文件的大小并累加}}closedir($dir_handle); //关闭文件资源return $dir_size; //返回计算后的目录大小}}$dir_size=dirSize("phpMyAdmin"); //调函数计算目录大小,返回目录大小echo round($dir_size/pow(1024,1),2)."KB";//将目录字节换为“KB”单位?>
建立与删除目录

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

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

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 的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到哪种情况。

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

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() 形式调用,否则会显示错误信息。