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,意味着最大可能的访问 ...
随机推荐
- 在ashx和静态文件中使用Session
在ashx页面中如果想使用可读可写的Session,必须要实现一个接口“IRequiresSessionState”,在这个接口中没有定义任何方法,这样的接口被称为“标识接口”. public int ...
- 虚拟硬盘格式vdi、vhd、vmdk相互转换
Windows7的引导程序能够引导vhd格式的虚拟硬盘,而VirtualBox创建的虚拟硬盘文件是vdi格式的,怎么办呢? 以前要借助其他软件才能实现,但是VirtualBox早就悄悄为我们带来了一个 ...
- Struts框架之 执行流程 struts.xml 配置详细
1.执行流程 服务器启动: 1. 加载项目web.xml 2. 创建Struts核心过滤器对象, 执行filter → init() struts-default.xml, 核心功能的初 ...
- java 重载与重写 【转】
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态 ...
- nodejs-ORM 操作数据库中间件waterline的使用
waterline和Sails.js同一团队开发,支持几乎所有的主流数据库,是nodejs下一款非常强大的orm,可以显著提升开发效率 一.waterline支持的数据库 二.waterline的配置 ...
- Centos 7部署大众点评CAT(二)——双服务器部署
在单机上部署CAT,只是在做实验,在生产环境则不可能只用单台服务器监控多个应用. 下面简单介绍一下双服务器的部署,各位有更多硬件资源作为监控服务端的朋友,如果对CAT集群有兴趣,可以参看这篇拙作. 资 ...
- thinkphp 面向切面编程-行为拓展
thinkphp的CBD模式 核心保留了最关键的部分,并在重要位置设置了标签用以标记,其他功能都采用行为扩展和驱动的方式组合,开发人员可以根据自己的需要,对某个标签位置进行行为扩展或者替换,就可以方便 ...
- [编辑器]vim常用操作
我是ide的用户,对于vim一只停留在:打开.看.写.关闭基本操作,因为现在更多的接触linux服务器,所以为了提高 效率,用好vim是必备技能!下面罗列一些vim的常用操作,用做备忘(不断更新): ...
- 【NOIP模拟】matrix(简化矩阵)
题目背景 SOURCE:NOIP2016-RZZ-1 题目描述 给出两个 N×N 的矩阵 A.B,矩阵每行每列标号 0-N-1 .定义这两个矩阵的乘积 AB 为
- jenkins - MultiJob使用
我们如果使用jenkins需要由串行,并行,传递参数和等待执行的功能的话,那我们会用到jenkins里面的两个东西:MultiJob和pipeline 这里我介绍下MultiJob的使用 实例任务的拓 ...