设为首页 收藏本站
查看: 513|回复: 0

[经验分享] PHP系列(九)PHP文件系统处理

[复制链接]

尚未签到

发表于 2018-12-13 08:35:39 | 显示全部楼层 |阅读模式
php文件系统处理

  1、文件系统概述
   is_dir( ) -- 判断给定文件名是否是一个目录
  语法结构:bool is_dir(名称)
  返回类型:文件名存在并且是一个目录则返回 true,否则返回 false。
   is_executable( ) -- 判断给定文件名是否可执行
  语法结构:bool is_executable(名称)
  返回类型:如果文件存在且可执行则返回 true ,否则返回 false 。
   is_file( ) -- 判断给定文件名是否为一个正常的文件
  语法结构:bool is_file(名称)
  返回类型:如果文件存在且为正常的文件则返回 true 。
   is_link( ) -- 判断给定文件名是否为一个符号连接
  语法结构:bool is_link(名称)
  返回类型:如果文件存在并且是一个符号连接则返回 true。
   is_readable( ) -- 判断给定文件名是否可读
  语法结构:bool is_readable(文件名称)
  返回类型:如果文件存在并且可读则返回 true 。
   is_writable( ) -- 判断给定的文件名是否可写
  语法结构:bool is_writable(文件名称)
  返回类型:如果文件存在并且可写则返回 true 。
  2、文件的属性
  //获取文件属性的函数
  Function getFilePro($filename) {
  //文件是否存在
  if(file_exists($filename)) {
  echo"这个文件存在";
  //获取文件的类型
                              getFileType($filename);
  if(is_dir($filename)) {
  echo"这是一个目录";
  }
  if(is_file($filename)) {
  echo"这是一个文件";
  echo"文件大小为:".tosize(filesize($filename))."";
  }
  //获取文件权限
  if(is_readable($filename)) {
  echo"文件可读";
  }
  if(is_writable($filename)) {
  echo"文件可写";
  }
  if(is_executable($filename)) {
  echo"文件可执行";
  }
  //创建时间
  echodate("Y-m-d H:i:s",filectime($filename))."";
  //访问时间
  echodate("Y-m-d H:i:s",fileatime($filename))."";
  //修改时间
  echodate("Y-m-d H:i:s",filemtime($filename))."";
  }else {
  echo"这个文件不存在";
  }
  }
  
           //文件大小转换函数
  functiontosize($size) {
  $s=$size;
  $dw="";
  if($size> pow(2, 40)) {
  $s= $size/pow(2, 40);
  $dw= "TB";
  }elseif($size > pow(2, 30)) {
  $s= $size/pow(2, 30);
  $dw= "GB";
  }elseif($size > pow(2, 20)) {
  $s= $size/pow(2, 20);
  $dw= "MB";
  }elseif($size > pow(2, 10)) {
  $s= $size/pow(2, 10);
  $dw= "KB";
  }else{      
  $s= $size;
  $dw= "types";
  }
  return$s.$dw;
  }
           //获取文件的类型
  functiongetFileType($filename){
  //可能的值:fifochardirblocklinkfile
  switch(filetype($filename)) {
  case'dir':
  echo"这是一个目录";
  break;
  case'char':
  echo"这是一个字符设置";
  break;
  case'block':
  echo"这是一个块设备";
  break;
  case'file':
  echo"这是一个文件";
  break;
  case'link':
  echo"这是一个链接";
  break;
  default:
  echo"末知类型";
  }
  }
  getFilePro("./feng.txt");
  
  3、解析目录路径
  DIRECTORY_SEPARATOR  代表 /
  PATH_SEPARATOR   代表 ;
  PHP_EOL 代表 换行符
  4、遍历目录
  //打开目录资源
  $dir = opendir("plus");
  while($filename = readdir($dir)) {
  //不要操作.和..
  if($filename!="."&& $filename!="..") {
  //一定要注意路径, 找对才可以
  $filename ="./plus/".$filename;
  if(is_dir($filename)) {
  echo "目录:".$filename."";
  } else {
  echo "文件:".$filename."";
  }
  }
  }
  rewinddir($dir);//倒回目录句柄
  echo"@@@@@@@@@@@@@";
  while($filename = readdir($dir)) {
  //不要操作.和..
  if($filename!="."&& $filename!="..") {
  //一定要注意路径, 找对才可以
  $filename ="./plus/".$filename;
  if(is_dir($filename)) {
  echo "目录:".$filename."";
  } else {
  echo "文件:".$filename."";
  }
  }
  }
  //关闭这个资源
  closedir($dir);
  //opendir()打开目录句柄
  //readdir()从目录句柄中读取条目
  //is_dir()判断给定文件名是否是一个目录
  //rewinddir()倒回目录句柄
  //closedir()关闭目录句柄
  //glod()遍历目录里文件
  foreach(glob("member/*") as $filename ) {
  echo$filename."";
  }
  5、统计目录的个数和大小
  $total = disk_total_space("c:"); //统计磁盘总大小的
  $free = disk_free_space("c:");//统计磁盘可用空间大小
  echo"C:盘约总大小:".round($total/pow(2,30))."G";
  echo"C:盘可用空间:".round($free/pow(2,30))."G";
  统计目录中的个数和大小实例
  $dirn =0;//目录数
  $filen =0;//文件数
  //用来统计一个目录下的文件和目录的个数
  functiongetdirnum($file){
  global $dirn;
  global $filen;
  $dir = opendir($file);
  while($filename = readdir($dir)){
  if($filename!="."&& $filename!=".."){
  $filename =$file."/".$filename;
  if(is_dir($filename)){
  $dirn++;
  getdirnum($filename);//递归、就可以查看所有子目录
  }else{
  $filen++;
  }
  }
  }
  closedir($dir);
  }
  getdirnum("plus");
  echo"目录数为:{$dirn}";
  echo"文件数为:{$filen}";
  //统计一个目录大小
  functiondirsize($file){
  $size = 0;
  $dir = opendir($file);
  while($filename = readdir($dir)){
  if($filename!="."  && $filename!=".."){
  $filename =$file."/".$filename;
  if(is_dir($filename)){
  //使用递归
  $size +=dirsize($filename);
  }else{
  $size += filesize($filename);
  }
  }
  }
  closedir($dir);
  return$size;
  }
  echo"目录大小为:".dirsize("member")/pow(1024,2)."Mb";
  6、建立与删除目录
  //mkdir("meizi"); 新建目录
  //mkdir("finger",0644);
  //rmdir("meizi"); 删除目录
  //rmdir("finger");
  //unlink 删除文件
  functiondeldir($dirname){
  if(!file_exists($dirname)){
  die("文件夹不存在!");
  }
  if(is_file($dirname)){
  unlink($dirname);
  }
  $dir = opendir($dirname);
  while($filename = readdir($dir)){
  if($filename !="."&& $filename!=".."){
  $filename =$dirname."/".$filename;
  if(is_dir($filename)){
  deldir($filename);
  }else{
  unlink($filename);
  }
  }
  }
  }
  deldir("aaa");
  7、复制移动目录
  //$dirsrc源目录
  //$dirto 目标目录
  function  copydir($dirsrc, $dirto){
  //如果原来的文件存在、是不是一个目录
  if(file_exists($dirto)){
  if(!is_dir($dirto)){
  echo "目标不是一个目录、不能copy进去";
  exit;
  }
  }else{
  mkdir($dirto);
  }
  $dir =opendir($dirsrc);
  while($filename= readdir($dir)){
  if($filename != "."&& $filename!=".."){
  $srcfile =$dirsrc."/".$filename;//原文件
  $tofile =$dirto."/".$filename;//目标文件
  if(is_dir($srcfile)){
  copydir($srcfile,$tofile); //递归处理所有子目录
  }else{
  copy($srcfile, $tofile);
  }
  }
  }
  }
  copydir("member","E:/cisco");
  
  8、文件的一些基本操作函数
  //创建一个空文件
  //touch("./feng.txt");
  //复制文件
  //copy("feng.txt","meize.txt");
  //移动或重新命名一个文件
  //rename("meize.txt","meizi.txt");
  //删除一个文件
  //unlink("meizi.txt");
  //      $fp = fopen("feng.txt","w");
  //      ftruncate($fp, 100);  把文件截断到指定的长度
  //对文件内容的操作
  //      file_get_contents("");
  //file_put_contents("meizi.txt","妹子今年18!"); 写入文件内容
  //file_put_contents("meizi.txt","小妹子今年19!");
  //echo file_get_contents("meizi.txt");  读取文件内容
  //file_put_contents("baidu.txt",file_get_contents("http://www.baidu.com"));
  //readfile("http://www.baidu.com");输出一个文件
  $arr =file("meizi.txt"); //file 把整个文件读入一个数组中
  echocount($arr);
  echo'';
  echo$arr[20];
  9、文件的打开与关闭
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650732-1-1.html 上篇帖子: PHP通过exec函数实现对APK自动签名 下篇帖子: PHP环境配置文件php.ini详解注释 --转贴
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表