刚写了一个目录拷贝的代码,老师如果有时间的话,希望老师帮忙看一下,谢谢。
来源:2-10 文件及目录处理相关考点

silas666
2017-09-16
// 题目:目录及目录里的文件复制到新目录, // 1.循环获取目录里的文件名,输出到数组 // 2.复制文件到新数组 // 1获取文件名,返回到一维数组(目录下的所有文件)格式:绝对目录+文件名 function getFilesName($dir){ if(!is_dir($dir)){ return '不是目录'; } $res = []; if( false != (@$handle = opendir($dir)) ){ while( false != ($file = readdir($handle)) ){ // 过滤掉 . .. 和 以.开头的文件 if($file != '.' && $file != '..' && 0 !== strpos($file, '.')){ $file_name = $dir . '/' .$file; if(filetype($file_name) == 'file'){ array_push($res, $file_name); } else if(filetype($file_name) == 'dir'){ foreach (getFilesName($file_name) as $file) { array_push( $res, $file); } } } } } return $res; } // 循环创建目录 function loopCreateDir($path){ $dir = dirname($path); //从文件地址获得文件路径,文件名用basename if(!file_exists($dir) ){ //file_exists — 检查文件或目录是否存在 loopCreateDir($dir); mkdir($dir, 0777); chmod($dir, 0777); } } // 将目录中的文件复制到新目录 // 1.检测文件目录是否存在 function copyToNewDir($source_dir, $target_dir){ $files = getFilesName(__DIR__); $target_files = str_replace($source_dir, $target_dir, $files); // 对数组批量替换 for ($i=0; $i < count($files); $i++) { loopCreateDir($target_files[$i]); // 复制文件,方法1 copy($files[$i], $target_files[$i]); // 复制文件,方法2 //file_put_contents( $target_files[$i],file_get_contents($files[$i]) ); } } copyToNewDir(__DIR__, __DIR__.'/../b');
请问,复制文件那里,方法1和方法2有什么区别呢?哪一种更好一些呢?谢谢老师
写回答
1回答
-
几个问题:
第一个函数的返回值,如果不是目录,返回false,这样比较容易判断使用
递归创建目录可以使用mkdir直接完成,不用这么麻烦,第三个参数给true即可
最后一个函数获取目录下的文件名称可以使用glob函数
132017-09-18
相似问题