PHP文件系统处理

2012-03-10 12:24:00
admin
原创
4362
文件类型和属性:
PHP是以UNIX的文件系统为模型的(UNIX系统中一切皆为文件)。
filetype()     //获取文件类型
文件的属性处理函数:
file_exists()
filesize()
………
注:以上函数的参数都是指定文件的全路径,不能只写个文件名称。

解析目录路径:

描述一个文件的位置可以用绝对定位和相对定位(以字符串形式)。
绝对定位:是从根目录开始;“/”
相对定位:是从当前目录开始;“./”  “../” (当前目录./可省略)
在系统的每个目录下都有两个特殊的目录“.”和”..”,即当前目录和上级目录。
注:建议使用“/”作为目录的分隔符,因为Linux和window都支持它。
“/var/www/html/index.php”     //绝对定位
“www/html/index.php”     //在var目录中,相对定位,等同“./www/html/index.php”
“../www/html/index.php”     //在html目录中,相对定位
(全)路径=目录名+基本文件名+扩展名
pathinfo()          //返回一个关联数组,包含三个元素,分别是全路径的三部分,下标分别为dirname, basename, extension
(dir=>目录     path=>路径)
遍历目录:
readdir()     //目录遍历函数(循环),参数就是opendir()函数的返回值,该函数依次返回指定目录下的文件名,当遍历到最后没有文件时返回false。
closedir()    //关闭目录
注:目录有开就有关。
遍历过程:
$dirname=”./data”;  //先确定要遍历的目录,保存到一个变量里
$dir_handle=opendir($dirname);  //打开该目录

//将遍历的目录和文件名用表格格式输出
echo ‘<table border=”0″ align=”center” width=”600″ cellspacing=”0″ cellpadding=”0″>’;
echo ‘<caption><h2>目录’.$dirname.’下面的内容</h2></caption>’;
echo ‘<tr align=”left” bgcolor=”#cccccc”>’;
echo ‘<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th>’;

//使用readdir()函数循环读取目录里的内容
while($file=readdir($dir_handle)){
//readdir()每次返回的只是文件名+扩展名,需要和之前的目录名组成全路径,以供后面使用
$dirFile=$dirname.”/”.$file;

echo ‘<tr>’;
echo ‘<td>’.$file.'</td>’;
echo ‘<td>’.filesize($dirFile).'</td>’;
echo ‘<td>’.filetype($dirFile).'</td>’;
echo ‘<td>’.date(“Y/n/t”,filemtime($dirFile)).'</td>’;
echo ‘</tr>’;
}
echo ‘</table>’;
closedir($dir_handle);

统计目录大小:
原理:实质就是统计目录里所有文件的大小只和。获取文件大小用filesize(),因可能存在子目录,所以会用到递归。
过程:
打开指定目录;
遍历目录;
屏蔽特殊目录(.和..);
判断是自目录还是自文件,若为子目录则递归,若为自文件则叠加文件大小;
关闭目录;
返回目录大小;
建立和删除目录:
建立目录:
mkdir()     //传入一个目录名
mkdir(“api/www/”);
mkdir(“xcj/”);
删除目录:
unlink()     //删除某个文件
原理:先情况目录,在删除目录。即先将目录中的文件和子目录全删除为空,在删除该目录,所以会用到递归。
过程:
打开指定目录;
遍历目录;
屏蔽特殊目录(.和..);
判断是自目录还是自文件,若为子目录则递归,若为自文件则直接删除它;
关闭目录;
删除该空目录;
复制目录:
原理:实质是复制文件和创建目录的过程,复制文件用copy(),创建目录用mkdir()
文件操作:
打开,关闭文件:
fopen(文件路径, 打开方式)     //打开文件,创建一个指向某文件的文件指针,返回值是资源类型,其他所有基于该函数的文件操作函数的参数都是该资源值即文件指针
注:新建文件也可以用fopen(),打开方式用a+或w+
fclose()     //关闭文件,撤销fopen()创建的资源类型
注:文件有开就有关。
获取文件信息:
fstat(文件指针)
写入文件:
fwrite(文件指针, 字符串)     //将字符串内容写入到文件中,执行完成后返回写入的字符数,否则返回FALSE
file_put_contents(文件路径,字符串)      //将一个字符串写入文件 ,不需要开关文件,更快捷
读取文件:
fread(文件指针, 字符长度大小)      //在打开的文件中读取指定长度(大小)的字符串
注:读取文件时,fopen()的打开模式参数必须是 ‘r’
默认情况下,我们读取内容输出到网页后,不会换行,因为网页不认识\r\n换行符,需要转换成<br/>,用str_replace()函数
str_replace(被转换字符,转换后的字符,操作字符串)
注:window系统换行符:\r\n
     linux系统换行符:\n
     网页换行符:<br/>

file_get_contents(文件路径)     // 将整个文件读入一个字符串,不需要开关文件,更快捷

复制文件:

copy()      //拷贝文件

copy ( string $source , string $dest [, resource $context ] )     //将文件从 source 拷贝到 dest
删除文件:
unlink(文件路径)
上传文件:
<form action=”result.php” method=”post” enctype=”multipart/form-data”>
<input type=”hidden” name=”MAX_FILE_SIZE” value=”500000″>
选择文件:<input type=”file” name=”myfile”>
<p><input type=”submit” value=”提交文件”></p>
</form>
注:表单有上传文件域时,必须用post方式,否则不能上传,且必须设置enctype属性,即编码类型。
虽然是用post方式上传到服务器,但在服务器文件中并不能用$_POST获取表单中file域的内容,上传到服务器的文件及其属性信息以二维数组的形式保存到了$_FILES中,即 $_FILES[file域名称][信息]
is_uploaded_file(临时文件名)     //判断指定文件是否是通过http post方式上传的。
move_uploaded_file(临时文件名, 目标路径)      //将上传的文件移动到新位置
注:上面这两个函数的参数文件名指的是文件上传服务器后的临时文件名,而不是之前在客户端时的文件名!
临时文件名 $FILES[“file域名称”][“tmp_name”],这是个全路径!
版权声明

版权声明:本站原创文章,转载请注明作者和出处。

本站点采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议