我有一个存储文件名和目录名的数组$bundle
。
我正在使用foreach循环运行数组,我想将它们移到另一个目录中。我正在使用重命名方法,它与JUST FILES一起工作得非常好。
但是其中包含其他文件的目录不响应rename()
方法。
$folder = 'files';
foreach ($bundle as $value) {
$ext = pathinfo($value, PATHINFO_EXTENSION);
if ($ext != "") { //if $value has no suffix it's a fil
rename(PATH . '/' .$value, $folder . '/' . $value);
}
if ($ext == "") { // it's a folder/directory
//rename doesn't work for directories with contents
//what method should i use here???
}
}
我知道pathinfo()
方法不是找出它是否是目录的最佳方法,但是对于我的小项目来说没问题。我只需要知道如何将包含所有内容的任何目录移动到“files”文件夹中。
感谢您的帮助。
答案 0 :(得分:4)
您必须使用glob
或scandir
获取该目录中的所有文件名。然后你必须通过重命名循环它们并移动它们。
你的另一个选择,如果你的主持人允许,那就是使用shell_exec
并为linux执行mv
或者为Windows命令执行copy
/ xcopy
并将它们移动到办法。如果您选择exec路由,请确保保护输入等以防止发生任何不良事件。