PHP中目录操作函数

时间:2021-09-05
本文章向大家介绍PHP中目录操作函数,主要包括PHP中目录操作函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

PHP中目录操作函数

1、是否是目录

is_dir 判断给定文件名是否是一个目录

$path = dirname(__FILE___);
echo is_dir($path) ? '目录' : '非目录';

2、获取当前的工作目录

getcwd()

echo getcwd(); ///mnt/hgfs/study.com/file

3、相关魔术常量

  1. __FILE__
    文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
    自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
<?php
echo '该文件位于 " '  . __FILE__ . ' " ';
//输出E:\wamp\www\test\index.php 
?>
  1. __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;
}




原文地址:https://www.cnblogs.com/chengwens/p/b322a74fcf89e70dca6b8d0702bd3dfe.html