美文网首页php入门
文件目录函数库(删除目录和复制目录封装)

文件目录函数库(删除目录和复制目录封装)

作者: 天承本草2020 | 来源:发表于2017-12-07 15:02 被阅读1次

删除目录

  1. rmdir()只能删除空目录,(先将目录置空,然后再删除目录)
    1. 打开目录
    2. 读取目录
      1. 如果读取不到内容,则目录可以直接删除
      2. 如果读取到的内容是普通文件,unlinke删除
      3. 如果是目录则继续检查

递归

  1. 具有相同的逻辑
  2. 具有明确的结束条件
 while ($byte>1024){
       $byte/=1024;
       $n++;
   }
function removeDirectory($dir)
{
    if (is_dir($dir)) {
//       删除目录
//       先将$dir清空,然后再删除
//       1.清空目录
//            1.1 打开目录
        $handler = opendir($dir);
//            1.2 读取目录
        while (($item = readdir($handler)) !== false) {
            if ($item != "." && $item != '..') {
                //如果读取到的内容是普通文件则直接删除
                //注意:判断文件时,先给出正确的路径
                $sub = $dir . DIRECTORY_SEPARATOR . $item;
                echo $sub,"<hr>";
                //a.txt 找不到(非法路径)
                //a/a.txt 能找到(有效路径)
                if (is_file($sub)) {
                    unlink($sub);
                }
                //如果读取到的内容是目录则继续检查...
                if (is_dir($sub)) {
                    //先要清空b目录,然后才能删除
                    //1.打开b路径
                    //2.读取b目录
                        //2.1如果读取到普通文件则直接删除
                        //2.2如果读取到目录则继续检查...
                            //2.2.1打开
                            //2.2.2读取目录
                            //2.2.3关闭目录

                    //3.关闭b目录
                    removeDirectory($sub);
                }

            }
        }
//            1.3 关闭目录
        closedir($handler);
//       2.删除目录
        rmdir($dir);

    }
    if (is_file($dir)) {
        unlink($dir);
//       删除普通文件
    }

}
$dir='a';
removeDirectory($dir);

递归复制目录

将a目录树复制为aa 目录

  1. 读取目录内容
  2. 给出正确的路径
  3. 执行函数
//递归复制目录
/**
 * 思路:
 * -a
 * --b
 * ---b.txt
 * --a.txt
 *
 * a=>aa
 * -aa
 * ---a.txt
 *
 * 普通文件直接使用copy($src,$dst)
 * 目录文件:
 * 1.目录不存在,则直接创建目录mkdir('aa');
 * 2.复制目录下的普通文件 a/a.txt 复制到 aa/a.txt
 * 3.复制目录下的子目录  a/b 复制到 aa/b mkdir('aa/b');
 * ....(一样的逻辑用递归)
 * @param string $src_dir 原始目录
 * @param string $dst_dir 目标目录
 */
function copyDirectory($src_dir, $dst_dir)
{
    if (!file_exists($src_dir)) {
        echo "原始目录不存在";
        exit;
    }
    if (!file_exists($dst_dir)) {
        mkdir($dst_dir);
    }
    //把原始目录下面的内容,复制到目标目录中
    //首先要查看原始目录中的内容
    //1.打开原始目录
    $handler = opendir($src_dir);
    //2.读取原始目录
    while (($item = readdir($handler)) !== false) {
        if ($item != "." && $item != "..") {
            //a.txt 转换成 a/a.txt 有效路径
            $source = $src_dir . DIRECTORY_SEPARATOR . $item;
            //目标路径:aa/a.txt
            $dest = $dst_dir . DIRECTORY_SEPARATOR . $item;
            //普通文件直接copy
            if (is_file($source)) {
                //copy("a/a.txt","aa/a.txt");
                copy($source, $dest);
            }
            //目录文件继续检查...
            if (is_dir($source)) {
                //$source="a/b";
                //$dest  ="aa/b";
                //如果目标目录不存在,则创建目标目录
//                if (!file_exists($dest)) {
//                    //mkdir("aa/b")
//                    mkdir($dest);
//                }
                //将原始($source)目录树复制到目标($dest)目录树
                //a/b/*复制到aa/b/*
                //1.打开 $source a/b
                //2.读取 $source a/b
                    //a/b/b.txt
                    //2.1如果读到的内容是普通文件则,直接复制
                    //2.2如果读到的内容是目录,则继续检查...
                //3.关闭 $source a/b
                //a/b 复制成aa/b
                copyDirectory($source,$dest);
            }
        }
    }

    //3.关闭原始目录
    closedir($handler);
}
$src_dir=__DIR__."/a";
$dst_dir=__DIR__."/aa";
copyDirectory($src_dir,$dst_dir);

相关文章

  • 文件目录函数库(删除目录和复制目录封装)

    删除目录 rmdir()只能删除空目录,(先将目录置空,然后再删除目录)打开目录读取目录如果读取不到内容,则目录可...

  • Linux笔记2

    文件、目录操作命令 cp — 复制文件和目录mv — 移动/重命名文件和目录mkdir — 创建目录rm — 删除...

  • Linux命令行

    文件和目录操作 复制文件目录 移动文件目录 重命名文件目录 删除文件目录 创建文件目录 查看文件内容 查看文件类型...

  • 命令用法非完全整理

    Linux常用命令知道哪些 文件和目录rm删除文件和目录mv移动文件和目录(可用来修改文件名字)cp复制文件和目录...

  • 2020年4月30日 第七章 文件-2

    第七章 文件-2 7.4 文件和目录操作 文件和目录操作包括:查看文件属性、复制和删除文件、创建和删除目录等1.o...

  • linux文件与目录的基础操作

    列出文件下的内容 切换工作目录 显示当前位置 创建目录 删除空目录 复制 移动文件 删除文件或目录 改变文件访问权...

  • Linux 文件与目录管理 ---学习笔记

    文件与目录管理 文件与目录的检视: ls 复制、删除与移动:cp,rm,mv 复制文件:cp 移除文件或目录:rm...

  • linux 常用命令

    终端 文件管理 查看目录和文件信息 新建文件、新建目录 移动和复制文件 删除文件或目录 新建链接文件软链接:软链接...

  • 基本的bash shell命令

    ls 显示当前目录下的文件和目录cd 切换当前目录 cp 复制文件 mv 重命名文件rm删除文件 pwd查看当前路...

  • 笔记二

    cd:切换工作目录mkdir:创建目录rmdir:删除目录cp:复制目录或文件,重命名等mv:移动目录或文件 帮助...

网友评论

    本文标题:文件目录函数库(删除目录和复制目录封装)

    本文链接:https://www.haomeiwen.com/subject/thgdixtx.html