Php 递归创建文件和文件夹
我得到了一个包含路径名和文件名的数组Php 递归创建文件和文件夹,php,Php,我得到了一个包含路径名和文件名的数组 ['css/demo/main.css', 'home.css', 'admin/main.css','account'] 如果这些文件和文件夹还不存在,我想创建它们。如果它们已经存在,请覆盖它们。 <?php function mkpath($path) { if(@mkdir($path) or file_exists($path)) return true; return (mkpath(dirname($path))
['css/demo/main.css', 'home.css', 'admin/main.css','account']
如果这些文件和文件夹还不存在,我想创建它们。如果它们已经存在,请覆盖它们。
<?php
function mkpath($path)
{
if(@mkdir($path) or file_exists($path)) return true;
return (mkpath(dirname($path)) and mkdir($path));
}
?>
这会递归生成路径。对于每个路径,您必须指定它是文件还是目录。或者,您可以让脚本假定,当basename(路径的最后一部分)包含一个点时,路径指向一个文件 递归创建目录很简单:
mkdir(dirname($path), 0755, true); // $path is a file
mkdir($path, 0755, true); // $path is a directory
0755
是文件权限表达式,您可以在此处阅读:我刚刚使用了一种简单的方法分解字符串,重新生成并检查是文件还是目录
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);
}
}
}
mkdir()。不需要特殊函数。但是带有递归参数的mkdir
将仅在创建的目录中的最后一个目录上设置权限。