php创建多级目录完整封装类操作
创建多级目录函数中调用创建指定下的指定文件的函数:
public function create_dir($dir,$mode=0777) { return is_dir($dir) or ($this->create_dir(dirname($dir)) and mkdir($dir, $mode)); }
创建指定路径下的指定文件,string $path(需要包含文件名和后缀),boolean $over_write 是否覆盖文件,int $time 设置时间。默认是当前系统时间,int $atime 设置访问时间。默认是当前系统时间。函数如下中调用了create_dir创建目录函数及删除unlink_file函数:
public function create_file($path,$over_write=FALSE,$time=NULL,$atime=NULL) { $path = $this->dir_replace($path); $time = empty($time) ? time() : $time; $atime = empty($atime) ? time() : $atime; if(file_exists($path) && $over_write) { $this->unlink_file($path); } $aimDir = dirname($path); $this->create_dir($aimDir); return touch($path,$time,$atime); }
删除非空目录函数,说明:只能删除非系统和特定权限的文件,否则会出现错误,string$dirName目录路径,boolean$is_all是否删除所有,boolean $del_dir 是否删除目录,函数如下:
public function remove_dir($dir_path,$is_all=FALSE) { $dirName = $this->dir_replace($dir_path); $handle = @opendir($dirName); while (($file = @readdir($handle)) !== FALSE) { if($file != '.' && $file != '..') { $dir = $dirName . '/' . $file; if($is_all) { is_dir($dir) ? $this->remove_dir($dir) : $this->unlink_file($dir); } else { if(is_file($dir)) { $this->unlink_file($dir); } } } } closedir($handle); return @rmdir($dirName); }
替换路径中//的字符相应的字符函数:
public function dir_replace($path) { return str_replace('//','/',str_replace('\\','/',$path)); }
/** * 指定文件编码转换 * @param string $path 文件路径 * @param string $input_code 原始编码 * @param string $out_code 输出编码 * @return boolean */ public function change_file_code($path,$input_code,$out_code) { if(is_file($path))//检查文件是否存在,如果存在就执行转码,返回真 { $content = file_get_contents($path); $content = string::chang_code($content,$input_code,$out_code); $fp = fopen($path,'w'); return fputs($fp,$content) ? TRUE : FALSE; fclose($fp); } }
/**
* 取得上传文件信息
* @param $file file属性信息
* @return array
*/
public function get_upload_file_info($file) { $file_info = $_FILES[$file];//取得上传文件基本信息 $info = array(); $info['type'] = strtolower(trim(stripslashes(preg_replace("/^(.+?);.*$/", "\\1", $file_info['type'])), '"'));//取得文件类型 $info['temp'] = $file_info['tmp_name'];//取得上传文件在服务器中临时保存目录 $info['size'] = $file_info['size'];//取得上传文件大小 $info['error'] = $file_info['error'];//取得文件上传错误 $info['name'] = $file_info['name'];//取得上传文件名 $info['ext'] = $this->get_ext($file_info['name']);//取得上传文件后缀 return $info; }
/**
* 取得文件路径信息
* @param $full_path 完整路径
* @return ArrayObject
*/
public function get_file_type($path) { //pathinfo() 函数以数组的形式返回文件路径的信息。 //---------$file_info = pathinfo($path); echo file_info['extension'];----------// //extension取得文件后缀名【pathinfo($path,PATHINFO_EXTENSION)】-----dirname取得文件路径【pathinfo($path,PATHINFO_DIRNAME)】-----basename取得文件完整文件名【pathinfo($path,PATHINFO_BASENAME)】-----filename取得文件名【pathinfo($path,PATHINFO_FILENAME)】 return pathinfo($path); }
/**
* 返回指定文件和目录的信息
* @param string $file
* @return ArrayObject
*/
public function list_info($file) { $dir = array(); $dir['filename'] = basename($file);//返回路径中的文件名部分。 $dir['pathname'] = realpath($file);//返回绝对路径名。 $dir['owner'] = fileowner($file);//文件的 user ID (所有者)。 $dir['perms'] = fileperms($file);//返回文件的 inode 编号。 $dir['inode'] = fileinode($file);//返回文件的 inode 编号。 $dir['group'] = filegroup($file);//返回文件的组 ID。 $dir['path'] = dirname($file);//返回路径中的目录名称部分。 $dir['atime'] = fileatime($file);//返回文件的上次访问时间。 $dir['ctime'] = filectime($file);//返回文件的上次改变时间。 $dir['perms'] = fileperms($file);//返回文件的权限。 $dir['size'] = filesize($file);//返回文件大小。 $dir['type'] = filetype($file);//返回文件类型。 $dir['ext'] = is_file($file) ? pathinfo($file,PATHINFO_EXTENSION) : '';//返回文件后缀名 $dir['mtime'] = filemtime($file);//返回文件的上次修改时间。 $dir['isDir'] = is_dir($file);//判断指定的文件名是否是一个目录。 $dir['isFile'] = is_file($file);//判断指定文件是否为常规的文件。 $dir['isLink'] = is_link($file);//判断指定的文件是否是连接。 $dir['isReadable'] = is_readable($file);//判断文件是否可读。 $dir['isWritable'] = is_writable($file);//判断文件是否可写。 $dir['isUpload'] = is_uploaded_file($file);//判断文件是否是通过 HTTP POST 上传的。 return $dir; }
完整封装代码内容有限,请到下面下载地址去下载:http://pan.baidu.com/s/1gf4AGoF
密码:iqun
php创建多级目录完整封装类操作的更多相关文章
- PHP判断文件夹是否存在和创建文件夹的方法(递归创建多级目录)
在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段 ...
- PHP中使用mkdir创建多级目录的方法
function mkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ return false; ...
- PHP创建多级目录文件夹
PHP创建多级目录的代码实例如下: <?php function create_dir($dirName) { // 去除输入目录名中的空格部分 $dirName = trim($dirName ...
- php使用递归创建多级目录
<?php header('Content-type:text/html;charset=utf8'); echo "Loading time:".date('Y-m-d H ...
- PHP 检查并创建多级目录
<?php //检查并创建多级目录 function checkDir($path){ $pathArray = explode('/',$path); $no ...
- php创建多级目录的两种方法
1.使用递归的思想 function mkdirs_2($path){ if(!is_dir($path)){ mkdirs_2(dirname($path)); if(!mkdir($path, 0 ...
- PHP递归创建多级目录(一道面试题的解题过程)
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...
- 【转】php利用mkdir创建多级目录
先介绍一下 mkdir() 这个函数: mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径: 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访 ...
- php mkdir 创建多级目录实例代码
先介绍一下 mkdir() 这个函数 mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径. 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问 ...
随机推荐
- (转载)iptables 转发oracle端口
本文出自 “乡丅亻” 博客,请务必保留此出处http://shaowu.blog.51cto.com/627407/514909 项目组同事需要将SQL请求转发到另一台服务器上,于是通过iptable ...
- 搭建ES6运行环境
当ES5还没有完全普及时,ES6就接踵而来了,2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015,我们也简称它为ES6或ES2015.在发布之后的将近一年内, ...
- JavaWeb 后端 <八> 之 JDBC基礎(全)
一.JDBC简介 1.JDBC是SUN公司为了简化操作数据推出一套规范.数据库厂商的驱动就是对JDBC的实现. 2.Java Data Base Connectivity(java数据库连接),它主要 ...
- 无法启动 IIS Express Web 服务器
问题描述:我用的是vs2015,有时候打开自己的项目,点击调试运行,会失败,弹出窗口,告诉我,无法启动 IIS Express Web 服务器,我就纳闷了,刚才还好好,怎么这会就不行了,各种试,都不行 ...
- jvm 加载class文件过程
jvm 加载class文件分为装载-链接-初始化三个过程. load -------->link verify prepare resolve ---------->initial ...
- 一个move_uploaded_file()引起的PHP异常与错误的深入理解
背景:我在公司开发一个产品Excel导入到数据库的功能,写起来挺快的,用phpexcel几下就写好了,本地测试挺顺的,git push上去,项目负责人部署到测试环境,就出现问题了.具体问题一句话不好说 ...
- java定时任务的实现方式
在本文里,我会给大家介绍2种不同的实现方法:1.普通thread实现2.ScheduledExecutorService实现 一:实现普通的thread: 首先是创建thread然后就是一直让whil ...
- Centos 7部署大众点评CAT(一)——单服务器部署
前一篇拙作上传的时间已经过去2个月了,中间并不是闲着...主要是忙着学习各种组件的安装,写了几篇安装心得存在硬盘里. 最近尝试了点评开源的CAT监控平台的安装,并且希望能够引入到工作中.在部署实践的过 ...
- 设计模式(3)抽象工厂模式(Abstract Factory)
设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 源码地址 0 抽象工厂模式简介 0.0 抽象工厂模式定义 抽象工厂 ...
- 机器学习 —— 基础整理(八)循环神经网络的BPTT算法步骤整理;梯度消失与梯度爆炸
网上有很多Simple RNN的BPTT(Backpropagation through time,随时间反向传播)算法推导.下面用自己的记号整理一下. 我之前有个习惯是用下标表示样本序号,这里不能再 ...