一、PHP中文件系统的类型与属性
PHP文件系统处理,所有文件处理都是使用系统函数完成的。是基于Linux/Unix系统为模型,
在PHP手册的Filesystem 函数可以查到所有的文件操作函数
文件系统处理的作用:
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函数可测出文件的类型:filetype("目录或文件名")
2、一些常用的判断函数:
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() 的别名
三、文件属性函数
1、 文件的属性函数
file_exists(); //判断文件是否存在
filesize(); //读出文件的大小
is_readable(); // 文件是否可写
is_writeable(); // 文件是否可写
filectime(); // 文件的创建时间,返回的是时间戳
filemtime(); // 文件的修改时间,返回的是时间戳
fileatime(); // 文件的上次访问的时间,返回是时间戳
stat(); // 会以数组的形式返回文件的所有状态
四、相关的代码练习
1、输出文件的类型
echo filetype("hello")."<br>";
echo filetype("demo.txt")."<br>";
if(is_writable("hello")){
echo "这是一个目录";
}else{
echo "这是一个文件";
2、输出文件的属性
date_default_timezone_set("PRC");
function getFilePro($fileName){
if(!file_exists($fileName)){
echo "文件或目录{$fileName} 不存在<br>";
return;
}else{
echo "文件的类型".filetype($fileName)."<br>";
}
if(is_file($fileName)){
echo "这是一个文件<br>";
echo "文件的大小为".getFileSize(filesize($fileName))."<br>";
}
if(is_dir($fileName)){
echo "这是一个目录<br>";
}
if(is_readable($fileName)){
echo "这个文件可以读<br>";
}
if(is_writable($fileName)){
echo "这个文件可以写<br>";
}
if(is_executable($fileName)){
echo "这个文件可以执行<br>";
}
echo "文件的创建时间:".date("Y-m-d H:i:s",filectime($fileName))."<br>";
echo "文件的修改时间:".date("Y-m-d H:i:s",filemtime($fileName))."<br>";
echo "文件的最后访问时间:".date("Y-m-d H:i:s",fileatime($fileName))."<br>";
}
function getFileSize($size){
$dw="Byte";
if($size >= pow(2, 40)){
$size=round($size/pow(2, 40), 2);
$dw="TB";
}else if($size >= pow(2, 30)){
$size=round($size/pow(2, 30), 2);
$dw="GB";
}else if($size >= pow(2, 20)){
$size=round($size/pow(2, 20), 2);
$dw="MB";
}else if($size >= pow(2, 10)){
$size=round($size/pow(2, 10), 2);
$dw="KB";
}else {
$dw="Bytes";
}
return $size.$dw;
}
getFilePro("demo.txt");
getFilePro("hello")
3、输出文件的所有状态,在linux和windows会有所不同
date_default_timezone_set("PRC");
echo '<pre>';
print_r(stat("demo.txt"));
echo '</pre>';
4、设置一个缓存文件的方法
date_default_timezone_set("PRC");
$cache=10; //缓存时间
$cachefile="cache.txt"; //缓存的文件
if(file_exists($cachefile) && (time()-$cache) < filemtime($cachefile)) {
echo file_get_contents($cachefile); //如果在缓存的10秒内,就从缓存文件中获取数据
}else{
file_put_contents($cachefile, date("Y-m-d H:i:s", time()));
}