php文件操作相关类实例


Posted in PHP onJune 18, 2015

本文实例讲述了php文件操作相关类。分享给大家供大家参考。具体如下:

<?php
 class file_dir
 {
  function check_exist($filename)
  //检查目录或文件是否存在
  {
   if(file_exists($filename))
   {
    return true;
   }
   else return false;
  }
  function create_dir($dirname,$mode=0777)
  // 一次只能创建一级目录
  {
   if(is_null($dirname) || $dirname=="") return false;
   if(!is_dir($dirname))
   {
    return mkdir($dirname,$mode);
   }
  }
  function createDir($aimUrl) //可同时创建多级目录
  {
   $aimUrl = str_replace('\\', '/', $aimUrl);
   $aimDir = '';
   $arr = explode('/', $aimUrl);
   foreach ($arr as $str)
   {
    $aimDir .= $str . '/';
    if (!file_exists($aimDir))
    {
     mkdir($aimDir);
    }
   }
  }
  function delete_dir($dirname) //删除目录
  {
   if($this->check_exist($dirname) and is_dir($dirname))
   {
    if(!$dirhandle=opendir($dirname)) return false;
    while(($file=readdir($dirhandle))!==false)
    {
     if($file=="." or $file=="..") continue;
     $file=$dirname.DIRECTORY_SEPARATOR.$file;
     //表示$file是$dir的子目录
     if(is_dir($file))
     {
      $this->delete_dir($file);
     }
     else
     {
      unlink($file);
     }
    }
    closedir($dirhandle);
    return rmdir($dirname);
   }
   else return false;
  }
  function copy_dir($dirfrom,$dirto) //复制目录
  {
   if(!is_dir($dirfrom)) return false;
   if(!is_dir($dirto))  mkdir($dirto);
   $dirhandle=opendir($dirfrom);
   if($dirhandle)
   {
    while(false!==($file=readdir($dirhandle)))
    {
     if($file=="." or $file=="..") continue;
     $filefrom=$dirfrom.DIRECTORY_SEPARATOR.$file;
     //表示$file是$dir的子目录
     $fileto=$dirto.DIRECTORY_SEPARATOR.$file;
     if(is_dir($filefrom))
     {
      $this->copy_dir($filefrom,$fileto);
     }
     else
     { if(!file_exists($fileto))
      copy($filefrom,$fileto);
     }
    }
   }
   closedir($dirhandle);
  }
  function getdir_size($dirname) //获取目录大小
  {
   if(!file_exists($dirname) or !is_dir($dirname)) return false;
   if(!$handle=opendir($dirname)) return false;
   $size=0;
   while(false!==($file=readdir($handle)))
   {
    if($file=="." or $file=="..") continue;
    $file=$dirname."/".$file;
    if(is_dir($file))
    {
     $size+=$this->getdir_size($file);
    }
    else
    {
     $size+=filesize($file);
    }
   }
   closedir($handle);
   return $size;
  }
  function getReal_size($size) // 单位自动转换函数
  {
   $kb=1024;
   $mb=$kb*1024;
   $gb=$mb*1024;
   $tb=$gb*1024;
   if($size<$kb) return $size."B";
   if($size>=$kb and $size<$mb) return round($size/$kb,2)."KB";
   if($size>=$mb and $size<$gb) return round($size/$mb,2)."MB";
   if($size>=$gb and $size<$tb) return round($size/$gb,2)."GB";
   if($size>=$tb) return round($size/$tb,2)."TB";
  }
  function copy_file($srcfile,$dstfile)
  {
   if(is_file($srcfile))
   {
    if(!file_exists($dstfile))
    return copy($srcfile,$dstfile);
   }
   else return false;
  }
  function unlink_file($filename) //删除文件
  {
   if($this->check_exist($filename) and is_file($filename))
   {
    return unlink($filename);
   }
   else return false;
  }
  function getsuffix($filename)
  //获取文件名后缀
  {
   if(file_exists($filename) and is_file($filename))
   {
    return end(explode(".",$filename));
   }
  }
  function input_content($filename,$str)
  //将字符串写入文件
  {
   if(function_exists(file_put_contents))
   {
    file_put_contents($filename,$str);
   }
   else
   {
    $fp=fopen($filename,"wb");
    fwrite($fp,$str);
    fclose($fp);
   }
  }
  function output_content($filename)
  //将整个文件内容读出到一个字符串中
  {
   if(function_exists(file_get_contents))
   {
    return file_get_contents($filename);
   }
   else
   {
    $fp=fopen($filename,"rb");
    $str=fread($fp,filesize($filename));
    fclose($fp);
    return $str;
   }
  }
  function output_to_array($filename)
  //将文件内容读出到一个数组中
  {
   $file=file($filename);
   $arr=array();
   foreach($file as $value)
   {
    $arr[]=trim($value);
   }
   return $arr;
  }
 }
 //$dir=new file_dir;
 //$size=$dir->getdir_size("F:/wamp/www/class/images");
 //echo $dir->getReal_size($size);
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
php-beanstalkd消息队列类实例分享
Jul 19 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
php身份证号码检查类实例
Jun 18 #PHP
PHP批量生成图片缩略图的方法
Jun 18 #PHP
基于php的CMS中展示文章类实例分析
Jun 18 #PHP
php实现的用户查询类实例
Jun 18 #PHP
php常用表单验证类用法实例
Jun 18 #PHP
php文件压缩之PHPZip类用法实例
Jun 18 #PHP
浅谈php中include文件变量作用域
Jun 18 #PHP
You might like
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
物业客服专员岗位职责
2013/11/30 职场文书
体育活动总结范文
2014/05/04 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
运动会口号8字
2014/06/07 职场文书
力学专业求职信
2014/07/23 职场文书
采购员岗位职责
2015/02/03 职场文书
教师节主题班会教案
2015/08/17 职场文书
Python中的pprint模块
2021/11/27 Python
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers