PHP文件系统处理
所有文件处理都是使用系统函数完成的。
是基于Linux/Unix系统为模型
文件系统处理的作用:
1. 所有的项目离不开文件处理
2. 可以用文件长时间保存数据
3. 建立缓存, 服务器中文件操作
文件处理
1. 文件类型
以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型
在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型
block :块设置文件,磁盘分区,软驱, cd-rom等
char: 字符设备,I/O 以字符为单位, 键盘,打印机等
dir: 目录也是文件的一种
fifo:
file:
link:
unknown
filetype("目录或文件名") 取得文件类型
<?php echo filetype("./test.txt"); ?>
is_array();
is_int();
is_string();
is_null;
is_bool();
is_dir -- 判断给定文件名是否是一个目录
is_executable -- 判断给定文件名是否可执行
is_file -- 判断给定文件名是否为一个正常的文件
is_link -- 判断给定文件名是否为一个符号连接
is_readable -- 判断给定文件名是否可读
is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
is_writable -- 判断给定的文件名是否可写
is_writeable -- is_writable() 的别名
<?php //is_dir -- 判断给定文件名是否是一个目录 var_dump(is_dir("./test.txt")); echo "<br>"; //is_executable -- 判断给定文件名是否可执行 var_dump(is_executable("./test.txt")); echo "<br>"; //is_file -- 判断给定文件名是否为一个正常的文件 var_dump(is_file("./test.txt")); echo "<br>"; //is_link -- 判断给定文件名是否为一个符号连接 var_dump(is_link("./test.txt")); echo "<br>"; //is_readable -- 判断给定文件名是否可读 var_dump(is_readable("./test.txt")); echo "<br>"; //is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的 var_dump(is_uploaded_file("./test.txt")); echo "<br>"; //is_writable -- 判断给定的文件名是否可写 var_dump(is_writeable("./test.txt")); echo "<br>"; //is_writeable -- is_writable() 的别名 ?>
2. 文件的属性
file_exists(); 检查文件或目录是否存在
filesize();
is_readable();
is_writeable();
filectime();
filemtime();
fileatime();
stat();
<?php /* file_exists(); 检查文件或目录是否存在 filesize(); filectime(); filemtime(); fileactime(); stat(); */ $filename="./test.txt"; //file_exists(); 检查文件或目录是否存在 var_dump(file_exists($filename)); echo "<br>"; //filesize(); 取得文件大小 echo filesize($filename); echo "<br>"; //filectime(); 取得文件的 inode 修改时间 echo date("F d Y H:i:s.", filectime($filename)); echo "<br>"; //filemtime(); 取得文件修改时间 echo date("F d Y H:i:s.", filemtime($filename)); echo "<br>"; //fileatime(); 取得文件的上次访问时间 echo date("F d Y H:i:s.",fileatime($filename)); echo "<br>"; //stat(); 给出文件的信息 echo "<pre>"; print_r(stat($filename)); echo "</pre>"; echo "<br>"; ?>
3.文件的属性
相对路径:(相对于当前目录的上级和下级目录)
. 当前目录
.. 上一级目录
路径分隔符:
在Linux/Unix使用“/”
在windows中使用“”和“/”都可以
绝对路径:
/ 根路径
/images/imdex.php
这个根指的是操作系统的根或是存放网站的文档根目录
如果是在服务器中执行(通过PHP文件处理函数执行)路径,则“根”指的是操作视同的根
如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”指的是文档根目录。
basename(url); 返回路径中的文件名部分
dirname(url); 返回路径中的目录部分
pathinfo(url); 返回文件路径的信息
<?php $url1="./aaa/bbb/index.php"; $url2="../www/yy/login.rar"; $url3="C:/appserv/www/demo.html"; $url4="http://localhost/yyy/ww.gif"; //返回路径中的文件名部分 echo basename($url1)."<br>"; echo basename($url2)."<br>"; echo basename($url3)."<br>"; echo basename($url4)."<br>"; echo "<hr>"; //返回路径中的目录部分 echo dirname($url1)."<br>"; echo "<hr>"; //返回文件路径的信息 echo "<pre>"; print_r(pathinfo($url1)); echo "<pre>"; ?>
4.文件的操作相关的函数
创建文件 touch("文件名");
删除文件 unlink("文件路径");
移动文件 为文件重新命名 rename("当前文件路径","目标文件路径");
复制文件 copy("当前","目标");
<?php //创建文件 touch ("./test.txt"); //删除文件 //unlink("D:/APMServ5.2.6/www/htdocs/php/3/1/test.txt"); //unlnk("test.txt"); //移动文件 为文件重新命名 //rename("./test.txt", "d:/test2.txt"); //复制文件,将前者复制到后者中 copy("test.txt", "d:/test4.txt") ?>
一定要有PHP执行这个文件的权限
和权限设置有关的函数(在Linux下)
chgrp----改变文件所属的组
chmod----改变文件模式
chown----改变文件的所有者
filegroup-----取得文件的组
fileowner-----取得文件的所有者