当前位置:首页 > PHP教程 > php文件操作 > 列表

php文件目录常用操作

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-05 10:17:30 浏览: 评论:0 
  1. <?php 
  2. /** 
  3.  
  4. * 转化 为 / 
  5.  
  6. * @param string $path 路径 
  7. * @return string 路径 
  8. */ 
  9. function dir_path($path) { 
  10.  $path = str_replace('\', '/', $path); 
  11.  if(substr($path, -1) != '/'$path = $path.'/'
  12. //开源代码phpfensi.com 
  13.  return $path
  14. /** 
  15. * 创建目录 
  16.  
  17. * @param string $path 路径 
  18. * @param string $mode 属性 
  19. * @return string 如果已经存在则返回true,否则为flase 
  20. */ 
  21. function dir_create($path$mode = 0777) { 
  22.  if(is_dir($path)) return TRUE; 
  23.  $ftp_enable = 0; 
  24.  $path = dir_path($path); 
  25.  $temp = explode('/'$path); 
  26.  $cur_dir = ''
  27.  $max = count($temp) - 1; 
  28.  for($i=0; $i<$max$i++) { 
  29.   $cur_dir .= $temp[$i].'/'
  30.   if (@is_dir($cur_dir)) continue
  31.   @mkdir($cur_dir, 0777,true); 
  32.   @chmod($cur_dir, 0777); 
  33.  } 
  34.  return is_dir($path); 
  35. /** 
  36. * 拷贝目录及下面所有文件 
  37.  
  38. * @param string $fromdir 原路径 
  39. * @param string $todir  目标路径 
  40. * @return string 如果目标路径不存在则返回false,否则为true 
  41. */ 
  42. function dir_copy($fromdir$todir) { 
  43.  $fromdir = dir_path($fromdir); 
  44.  $todir = dir_path($todir); 
  45.  if (!is_dir($fromdir)) return FALSE; 
  46.  if (!is_dir($todir)) dir_create($todir); 
  47.  $list = glob($fromdir.'*'); 
  48.  if (!emptyempty($list)) { 
  49.   foreach($list as $v) { 
  50.    $path = $todir.basename($v); 
  51.    if(is_dir($v)) { 
  52.     dir_copy($v$path); 
  53.    } else { 
  54.     copy($v$path); 
  55.     @chmod($path, 0777); 
  56.    } 
  57.   } 
  58.  } 
  59.     return TRUE; 
  60. /** 
  61. * 转换目录下面的所有文件编码格式 
  62.  
  63. * @param string $in_charset  原字符集 
  64. * @param string $out_charset 目标字符集 
  65. * @param string $dir   目录地址 
  66. * @param string $fileexts  转换的文件格式 
  67. * @return string 如果原字符集和目标字符集相同则返回false,否则为true 
  68. */ 
  69. function dir_iconv($in_charset$out_charset$dir$fileexts = 'php|html|htm|shtml|shtm|js|txt|xml') { 
  70.  if($in_charset == $out_charsetreturn false; 
  71.  $list = dir_list($dir); 
  72.  foreach($list as $v) { 
  73.   if (preg_match("/.($fileexts)/i"$v) && is_file($v)){ 
  74.    file_put_contents($v, iconv($in_charset$out_charsetfile_get_contents($v))); 
  75.   } 
  76.  } 
  77.  return true; 
  78. /** 
  79. * 列出目录下所有文件 
  80.  
  81. * @param string $path  路径 
  82. * @param string $exts  扩展名 
  83. * @param array $list  增加的文件列表 
  84. * @return array 所有满足条件的文件 
  85. */ 
  86. function dir_list($path$exts = ''$listarray()) { 
  87.  $path = dir_path($path); 
  88.  $files = glob($path.'*'); 
  89.  foreach($files as $v) { 
  90.   $fileext = fileext($v); 
  91.   if (!$exts || preg_match("/.($exts)/i"$v)) { 
  92.    $list[] = $v
  93.    if (is_dir($v)) { 
  94.     $list = dir_list($v$exts$list); 
  95.    } 
  96.   } 
  97.  } 
  98.  return $list
  99. /** 
  100. * 设置目录下面的所有文件的访问和修改时间 
  101.  
  102. * @param string $path  路径 
  103. * @param int  $mtime  修改时间 
  104. * @param int  $atime  访问时间 
  105. * @return array 不是目录时返回false,否则返回 true 
  106. */ 
  107. function dir_touch($path$mtime = TIME, $atime = TIME) { 
  108.  if (!is_dir($path)) return false; 
  109.  $path = dir_path($path); 
  110.  if (!is_dir($path)) touch($path$mtime$atime); 
  111.  $files = glob($path.'*'); 
  112.  foreach($files as $v) { 
  113.   is_dir($v) ? dir_touch($v$mtime$atime) : touch($v$mtime$atime); 
  114.  } 
  115.  return true; 
  116. /** 
  117. * 目录列表 
  118.  
  119. * @param string $dir  路径 
  120. * @param int  $parentid 父id 
  121. * @param array $dirs  传入的目录 
  122. * @return array 返回目录列表 
  123. */ 
  124. function dir_tree($dir$parentid = 0, $dirs = array()) { 
  125.  global $id
  126.  if ($parentid == 0) $id = 0; 
  127.  $list = glob($dir.'*'); 
  128.  foreach($list as $v) { 
  129.   if (is_dir($v)) { 
  130.             $id++; 
  131.    $dirs[$id] = array('id'=>$id,'parentid'=>$parentid'name'=>basename($v), 'dir'=>$v.'/'); 
  132.    $dirs = dir_tree($v.'/'$id$dirs); 
  133.   } 
  134.  } 
  135.  return $dirs
  136.  
  137. /** 
  138. * 删除目录及目录下面的所有文件 
  139.  
  140. * @param string $dir  路径 
  141. * @return bool 如果成功则返回 TRUE,失败则返回 FALSE 
  142. */ 
  143. function dir_delete($dir) { 
  144.  $dir = dir_path($dir); 
  145.  if (!is_dir($dir)) return FALSE; 
  146.  $list = glob($dir.'*'); 
  147.  foreach($list as $v) { 
  148.   is_dir($v) ? dir_delete($v) : @unlink($v); 
  149.  } 
  150.     return @rmdir($dir); 
  151.  
  152. ?> 

Tags: php文件操作 php目录操作

分享到: