码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-07 09:26:18      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

解析目录路径

使用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/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//自定义一个函数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() 形式调用,否则会显示错误信息。

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

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4556700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!