侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP常用技术文之文件操作和目录操作总结

php  /  管理员 发布于 7年前   328

一、基本文件的操作

文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等

';     return;   }   /*是否是普通文件*/   if(is_file($fileName))   {     echo $fileName.'是一个文件
'; } /*是否是目录*/ if(is_dir($fileName)) { echo $fileName.'是一个目录'; } /*输出文件的型态*/ echo '文件型态是:'.getFileType($fileName).'
'; /*文件大小,转换单位*/ echo '文件大小是:'.getFileSize(filesize($fileName)).'
'; /*文件是否可读*/ if(is_readable($fileName)) { echo '文件可读
'; } /*文件是否可写*/ if(is_writable($fileName)) { echo '文件可写
'; } /*文件是否可执行*/ if(is_executable($fileName)) { echo '文件可执行
'; } echo '文件创立时间:'.date('Y年m月j日',filectime($fileName)).'
'; echo '文件最后修改时间:'.date('Y年m月j日',filemtime($fileName)).'
'; echo '文件最后打开时间:'.date('Y年m月j日',fileatime($fileName)).'
'; } /* *声明一个函数,返回文件类型 *@param string $fileName 文件名称 */ function getFileType($fileName) { $type = ''; switch(filetype($fileName)) { case 'file':$type .= '普通文件';break; case 'dir':$type .= '目录文件';break; case 'block':$type .= '块设备文件';break; case 'char':$type .= '字符设备文件';break; case 'filo':$type .= '管道文件';break; case 'link':$type .= '符号链接';break; case 'unknown':$type .= '未知文件';break; default: } return $type; } /* *声明一个函数,返回文件大小 *@param int $bytes 文件字节数 */ function getFileSize($bytes) { if($bytes >= pow(2,40)) { $return = round($bytes / pow(1024,4),2); $suffix = 'TB'; } else if($bytes >= pow(2,30)) { $return = round($bytes / pow(1024,3),2); $suffix = 'GB'; } else if($bytes >= pow(2,20)) { $return = round($bytes / pow(1024,2),2); $suffix = 'MB'; } else if($bytes >= pow(2,10)) { $return = round($bytes / pow(1024,1),2); $suffix = 'KB'; } else { $return = $bytes; $suffix = 'B'; } return $return." ".$suffix;} /*调用函数,传入test目录下的test.txt文件*/ getFilePro('./test/div.html');?>

结果:

二、目录的操作

目录的操作有:遍历目录、删除、复制、大小统计等

1、遍历目录

 /* *遍历目录 *@param string $dirName 目录名 */ function findDir($dirName) {   $num = 0; /*统计子文件个数*/   $dir_handle = opendir($dirName); /*打开目录*/   /*输出目录文件*/   echo '';   echo '';   echo '文件名';   while($file = readdir($dir_handle))   {     $dirFile = $dirName.'/'.$file;     $bgcolor = $num++%2==0?'#ffffff':'#cccccc';     echo '';     echo '';     echo '';     echo '';     echo '';     echo '';   }   echo "

目录'.$dirName.'下的文件

文件大小文件类型修改时间
'.$file.''.filesize($dirFile).''.filetype($dirFile).''.date('Y/n/t',filemtime($dirFile)).'
"; closedir($dir_handle); /*关闭目录*/ echo "在".$dirName."目录下共有".$num.'个子文件'; } /*传递当前目录下的test目录*/ findDir('./test');

结果

2、统计目录大小

 /* *统计目录大小 *@param string $dirName 目录名 *@return double */function dirSize($dirName){   $dir_size = 0;   if($dir_handle = @opendir($dirName))   {     while ($fileName = readdir($dir_handle))     {       /*排除两个特殊目录*/       if($fileName != '.' && $fileName != '..')       {         $subFile = $dirName.'/'.$fileName;         if(is_file($subFile))         {           $dir_size += filesize($subFile);         }         if(is_dir($subFile))         {           $dir_size += dirSize($subFile);         }       }     }     closedir($dir_handle);     return $dir_size;   } } /*传递当前目录下的test目录*/ $dir_size = dirSize('./test'); echo './test目录文件大小是:'.round($dir_size / pow(1024,1),2).'KB';

结果:

3、删除目录

/**删除目录*@param string $dirName 目录名 */ function delDir($dirName) {   /*php中的mkdir函数就可以创建目录*/   if(file_exists($dirName))   {     if($dir_handle = @opendir($dirName))     {       while ($fileName = readdir($dir_handle))       {         /*排除两个特殊目录*/         if($fileName != '.' && $fileName != '..')         {           $subFile = $dirName.'/'.$fileName;           if(is_file($subFile))           { unlink($subFile);           }           if(is_dir($subFile))           { delDir($subFile);           }         }       }       closedir($dir_handle);       rmdir($dirName);       return $dirName.'目录已经删除';     }   } } /*传递test目录的副本test1*/ echo delDir('./test1'); 

删除成功的提示信息

4、复制目录

 /* *复制目录 *@param string $dirSrc 原目录名 *@param string $dirTo 目标目录名 */ function copyDir($dirSrc,$dirTo) {   if(is_file($dirTo))   {     echo '目标目录不能创建';/*目标不是一个*/     return;   }   if(!file_exists($dirTo))   {     /*目录不存在则创建*/     mkdir($dirTo);   }   if($dir_handle = @opendir($dirSrc))   {     while ($fileName = readdir($dir_handle))     {       /*排除两个特殊目录*/       if($fileName != '.' && $fileName != '..')       {         $subSrcFile = $dirSrc.'/'.$fileName;         $subToFile = $dirTo.'/'.$fileName;         if(is_file($subSrcFile))         {           copy($subSrcFile,$subToFile);         }         if(is_dir($subSrcFile))         {           copyDir($subSrcFile,$subToFile);         }       }     }     closedir($dir_handle);     return $dirSrc.'目录已经复制到'.$dirTo.'目录';   } } echo copyDir('./test','../testcopy');

您可能感兴趣的文章:

  • PHP中文件读、写、删的操作(PHP中对文件和目录操作)
  • PHP 创建文件(文件夹)以及目录操作代码
  • php目录操作函数之获取目录与文件的类型
  • php目录操作实例代码
  • php opendir()列出目录下所有文件的实例代码
  • PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
  • php之readdir函数用法实例
  • 使用PHP函数scandir排除特定目录
  • php中目录操作opendir()、readdir()及scandir()用法示例


  • 上一条:
    浅谈php和.net的区别
    下一条:
    PHP常用编译参数中文说明
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客