52_PHP的文件系统操作(一)文件的类型与属性(53)PHP文件处理(二)文件路径及操作和权限

52_PHP的文件系统操作(一)文件的类型与属性PHP文件系统处理
  所有文件处理都是使用系统函数完成的。
  是基于Linux/Unix系统为模型的,有的函数在windows操作系统中不好用。
 
  文件系统处理的作用:
  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: 链接文件,相当于windows下的快捷方式
  unknown :未知
 
  filetype("目录或文件名")
 
  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() 的别名
 
 
  2. 文件的属性
  file_exists();--文件是否存在
  filesize();--文件大小
  is_readable();--文件是否可读
  is_writeable();--文件是否可写
  filectime();--文件创建时间
  filemtime();--文件修改时间
  fileactime();--文件最后访问时间
  stat();--文件状态
 
  3. 和文件目录相关的函数
  4. 文件的操作(创建文件,删除文件,移动文件)
  5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)
  6. 文件内部移动指针(读取文件内部部分内容的时候将指针移动到要读的内容)
  7. 文件的锁定一些机制处理
 
 
    目录的处理
  1. 目录的遍历
  2. 目录的创建
    3. 目录的删除
    4. 目录的复制
  5. 统计目录大小
 
 
    文件上传和下载
    1. 上传
    2. 下载
 
 
 


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)){   //2的40次方或者1024的4次方
$size=round($size/pow(2, 40), 2);  //最后这个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、    date_default_timezone_set("PRC");


echo '<pre>';    //原格式输出数组
print_r(stat("demo.txt"));
echo '</pre>';










4、date_default_timezone_set("PRC");




$cache=5;                   //缓存时间,5秒内是读取文件内容,5秒后是更新文件内容,可以写内容。从时间上可以看出文件多久没有被更新了
$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()));  //否则重新生成缓存时间

}








(53)PHP文件处理(二)文件路径及操作和权限
<?php
/*  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("目录或文件名")
 *
 * 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() 的别名
 *
 *
 * 2. 文件的属性
 * file_exists();
 * filesize();
 * is_readable();
 * is_writeable();
 * filectime();
 * filemtime();
 * fileactime();
 * stat();
 *
 * 3. 和文件路径相关的函数
 *
 * 相对路径:相对于当前目录的上级和下级目录
 * .  当前目录
 * .. 上一级目录
 *
 * ./php/apache/index.php
 * php/apahce/index.php
 * login.php
 * ./login.php
 * ../images/tpl/logo.gif
 *
 *
 * 路径分隔符号
 * linux/Unix    "/"
 * windows       "\"
 *
 * DIRECTORY_SEPARATOR  为不同平台,在Windows \ Linux /
 *
 * 不管是什么操作系统PHP的目录分割符号都支技 / (Linux)
 *
 * 在PHP和Apache配置文件中如果需要指定目录,也使用/作为目


录符号
 *
 * 绝对路径:
 * / 根路径
 *
 * /images/index.php
 *
 * 指的操作系统的根
 * 指的是存放网站的文档根目录
 *
 *                              分情况
 *
 *  如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根
 *  如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是


文档根目录
 *
 *从客户端程序访问服务器端的就得通过服务器以以下格式访问http://www.xsphp.com/logo.gif
 *
 *
 * basename(url)     //只要文件名
 * dirname(url)     //目录名
 * pathinfo(url)    //路径信息
 *
 *
 *
 *
 * 4. 文件的操作(创建文件,删除文件,移动文件)
        创建文件 touch("文件名")
 * 删除文件 unlink("文件路径");
 * 移动文件 为文件重新命名 rename("当前文件路径", “目录为文件路径”)
 * 复制文件 copy("当前", “目标”);
 *
 * 一定要有PHP执行这个文件权限, Apache, 一个用户
 *
 *
 * 和权限设计有关的函数
 *
 *
ls -l  或 ll


_rwxrwxrwx   777


_ 类型 _文件  d 表示是目录  l  b   


rwx 表这个文件的拥有者  r读 w写 x执行    
rwx 表这个文件的拥有者所在的组  r读 w写 x执行
rwx 其它用户对这个为文件的权限  r读 w写 x执行


r 4
w 2
x 1 


7 7 7  4+2+1  4+2+1 4+2+1
rwx   rwx  rwx

644
4+2   4   4
rw_  r__ r__
754

chmod u=rwx,g=rw,o=x  //用户读写执行权限、组读写、其他用户执行的权限
chmod 777  demo.php    //可读可写可执行
chmod 644  demo.html   //当前用户可读可写,其他用户只读不写


chown  mysql demo.php   //把demo.php的拥有者改为mysql


chgrp  apache demo.php  //把demo.php的拥有组改为apache
chgrp -- 改变文件所属的组
chmod -- 改变文件模式
chown -- 改变文件的所有者


filegroup -- 取得文件的组
fileowner -- 取得文件的所有者




// touch("./php.apahce"); //创建一个为文件


// unlink("C:/AppServ/www/xsphp/apache.php");


// rename("./test.txt", "d:/test2.txt");


// copy("cache.txt", "./cache5.txt");




chmod("/aaa/index.php", "755"); //将文件权限改为755


 * 5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)
 * 6. 文件内部移动指针
 * 7. 文件的锁定一些机制处理
 *
 *
 *   目录的处理
 *   1. 目录的遍历
 *   2. 目录的创建
 *   3. 目录的删除
 *   4. 目录的复制
 * 5. 统计目录大小
 *
 *
 *   文件上传和下载
 *   1. 上传
 *   2. 下载
 *
 *
 */


1、 $url1="./aaa/bbb/index.php";
$url2="../www/yyy/login.rar";
$url3="c:/appserv/www/demo.html";
$url4="http://localhost/yyy/www.gif";


echo basename($url1)."<br>";    //只要文件名的时候用这个函数,非常方便
echo basename($url2)."<br>";
echo basename($url3)."<br>";
echo basename($url4)."<br>";


  


        index.php
        login.rar
        demo.html
        www.gif








 2、    $url1="./aaa/bbb/index.php";
$url2="../www/yyy/login.rar";
$url3="c:/appserv/www/demo.html";
$url4="http://localhost/yyy/www.gif";


echo dirname(dirname($url1))."<br>";
echo dirname($url2)."<br>";
echo dirname($url3)."<br>";
echo dirname($url4)."<br>";




3、 $url1="./aaa/bbb/index.php";
$url2="../www/yyy/login.rar";
$url3="c:/appserv/www/demo.class.html";
$url4="http://localhost/yyy/www.gif";
echo '<pre>';
print_r($path=pathinfo($url3));
echo '</pre>';


echo $path["extension"];    //path的扩展名部分是html




































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值