递归创建文件和文件夹

时间:2011-07-11 13:27:15

标签: php

我有一个包含路径名和文件名的数组

['css/demo/main.css', 'home.css', 'admin/main.css','account']

我想创建那些尚不存在的文件和文件夹。如果它们已经存在,则覆盖它们。

3 个答案:

答案 0 :(得分:21)

对于每个路径,您都必须具体说明它是文件还是目录。或者你可以让你的脚本假设,当基本名称(路径的最后一部分)包含一个点时,路径指向一个文件。

以递归方式创建目录很简单:

mkdir(dirname($path), 0755, true); // $path is a file
mkdir($path, 0755, true);          // $path is a directory

0755是文件权限表达式,您可以在此处阅读:http://ch.php.net/manual/en/function.chmod.php

答案 1 :(得分:1)

<?php
  function mkpath($path)
  {
    if(@mkdir($path) or file_exists($path)) return true;
    return (mkpath(dirname($path)) and mkdir($path));
  }
?>

这会递归地生成路径。

答案 2 :(得分:0)

我刚用一种简单的方法来爆炸字符串并重建并检查文件或目录是否是

public function mkdirRecursive($path) {


    $str = explode(DIRECTORY_SEPARATOR, $path);
    $dir = '';
    foreach ($str as $part) {
        $dir .= DIRECTORY_SEPARATOR. $part ;
        if (!is_dir($dir) && strlen($dir) > 0 && strpos($dir, ".") == false) {
            mkdir($dir , 655);
        }elseif(!file_exists($dir) && strpos($dir, ".") !== false){
           touch($dir);
        }
    }
}