PHP中目录操作函数
1、是否是目录
is_dir 判断给定文件名是否是一个目录
$path = dirname(__FILE___);
echo is_dir($path) ? '目录' : '非目录';2、获取当前的工作目录
getcwd()
echo getcwd(); ///mnt/hgfs/study.com/file3、相关魔术常量
- __FILE__
 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
 自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
<?php
echo '该文件位于 " '  . __FILE__ . ' " ';
//输出E:\wamp\www\test\index.php 
?>- __DIR__
 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
 它等价于 dirname(- __FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
<?php
echo '该文件位于 " '  . __DIR__ . ' " ';
//输出E:\wamp\www\test
?>4、磁盘空间
只对磁盘根目录起作用
- 当前磁盘的总空间 disk_total_space($directory)
- 当前磁盘的剩余空间 disk_free_space($directory)
5、创建目录
mkdir()
6、删除空目录
rmdir()
7、读目录句柄
$rHandle = opendir($path);
$filename = readdir($rHandle)8、重置指针
$rHandle = opendir($path);
$filename = readdir($rHandle);
var_dump($filename);
$filename = readdir($rHandle);
var_dump($filename);
$filename = readdir($rHandle);
var_dump($filename);
rewinddir($rHandle); //指针初始化
$filename = readdir($rHandle);
var_dump($filename);9、复制目录
copy
剪切目录
copy + rmdir
10、重命名目录
rename rmdir
11、关闭目录句柄
closedir
12、chdir() 函数改变当前的目录
13、basename()返回路径中的文件名
14、diename()返回路径中目录部分
递归删除目录下的文件
<?php
// $dir:要删除的文件的目录
function recursiveDelete($dir)
{    
     // 打开指定目录
   if ($handle = @opendir($dir))
   {
     while (($file = readdir($handle)) !== false)
     {
         if (($file == ".") || ($file == ".."))
         {
           continue;
         }
         if (is_dir($dir . '/' . $file))
         {
           // 递归
           recursiveDelete($dir . '/' . $file);
         }
         else
         {
           unlink($dir . '/' . $file); // 删除文件
         }
     }
     @closedir($handle);
     rmdir ($dir); 
   }
}遍历文件夹下所有文件
<?php
function read_all ($dir){
    if(!is_dir($dir)) return false;
    $handle = opendir($dir);
    if($handle){
        while(($fl = readdir($handle)) !== false){
            $temp = iconv('GBK','utf-8',$dir.DIRECTORY_SEPARATOR.$fl);//转换成utf-8格式
            //如果不加  $fl!='.' && $fl != '..'  则会造成把$dir的父级目录也读取出来
            if(is_dir($temp) && $fl!='.' && $fl != '..'){
                echo '目录:'.$temp.'<br>';
                read_all($temp);
            }else{
                if($fl!='.' && $fl != '..'){
                    echo '文件:'.$temp.'<br>';
                }
            }
        }
    }
}
read_all('D:\wamp\www\test');
//另一种方法,树形结构显示
tree("alipay");
function tree($directory)
{
  $mydir = dir($directory);
  echo "<ul>";
  while ($file = $mydir->read()) {
  if($file != "."&&$file != ".."){
  if (is_dir("$directory/$file")) {
  echo "<li style='color:blue'>$file</li>";
  tree("$directory/$file");
  } else{
  echo "<li>$file</li>";
  }
 } }  echo "</ul>";
  $mydir->close();
}
?>获得文件夹大小并格式化
$dir='CMS';
echo getRealSize(getDirSize($dir));
// 获取文件夹大小
function getDirSize($dir)
{
  $sizeResult=0;
  $handle = opendir($dir);
  while (false!==($FolderOrFile = readdir($handle)))
 {  if($FolderOrFile != "." && $FolderOrFile != "..")
 {  if(is_dir("$dir/$FolderOrFile"))
 {  $sizeResult += getDirSize("$dir/$FolderOrFile");
  }
  else
  {
  $sizeResult += filesize("$dir/$FolderOrFile");
  }
 } } closedir($handle);
  return $sizeResult;
}
// 单位自动转换函数
function getRealSize($size)
{
  $kb = 1024; // Kilobyte
  $mb = 1024 * $kb; // Megabyte
  $gb = 1024 * $mb; // Gigabyte
  $tb = 1024 * $gb; // Terabyte
  if($size < $kb)
 {  return $size." B";
  }
  else if($size < $mb)
 {  return round($size/$kb,2)." KB";
  }
  else if($size < $gb)
 {  return round($size/$mb,2)." MB";
  }
  else if($size < $tb)
 {  return round($size/$gb,2)." GB";
  }
  else
  {
  return round($size/$tb,2)." TB";
  }
}
/*function getFolderSize($dir)
{
  $count_size = 0;
  $dir_array = scandir($dir);
  foreach ($dir_array as $filename) {
  if ($filename != "." && $filename != "..") {
  if (is_dir($dir . "/" . $filename)) {
  $count_size+= getFolderSize($dir . "/" . $filename);
  } else{
  $count_size = $count_size + filesize($dir . "/" . $filename);
  }
 } }  return $count_size;
}*/ 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号