将具有特定扩展名的文件从目录移动到 PHP 中的子目录
Move Files with specific extentions from a directory to a subdirectory in PHP
以前可能有人问过这个问题,但我在之前建议的解决方案中找不到解决方案。我是 PHP 的新手,我正在尝试将扩展名为 .zip 的文件移动到子文件夹。我在源文件夹中循环查找特定文件后,无法使用 rename() 方法将文件移动到子文件夹中。
<?php
$updatesFolder = realpath('C:\xampp\htdocs\project\updates');
$archiveFolder = realpath('C:\xampp\htdocs\project\updates\archive');
if (file_exists($updatesFolder) && is_dir($updatesFolder)) {
// Get the files of the directory as an array
$scan_arr = scandir($updatesFolder);
$files_arr = array_diff($scan_arr, array('.','..') );
//echo "<pre>"; print_r( $files_arr ); echo "</pre>";
// Get each files of directory with line break
foreach ($files_arr as $file) {
//Get the file path
$file_path = $updatesFolder.$file;
//echo $file_path;
// Get the file extension
$file_ext = pathinfo($file_path, PATHINFO_EXTENSION);
if ($file_ext=="zip") {
$data = $file;
$dirHandle = opendir($updatesFolder);
$dirHandle2 = opendir($archiveFolder);
while ($file = readdir($dirHandle)) {
if ($file==$data) {
//unlink($updatesFolder.'/'.$file);
//var_dump ($data);
rename($updatesFolder , $archiveFolder);
}
}
}
}
} else {
echo "Directory does not exists";
}
?>
里面有很多不必要的代码,我想是通过多次尝试修复它。
基本上主要问题是您必须一次移动一个文件,按名称
$updatesFolder = realpath('./database');
$archiveFolder = realpath('./database/archive');
echo $updatesFolder . PHP_EOL . $archiveFolder . PHP_EOL;
if (file_exists($updatesFolder) && is_dir($updatesFolder)) {
$scan_arr = scandir($updatesFolder);
$files_arr = array_diff($scan_arr, array('.','..') );
foreach ($files_arr as $file) {
if ("zip" == pathinfo($file, PATHINFO_EXTENSION)) {
rename($updatesFolder.'/'.$file , $archiveFolder.'/'.$file);
}
}
} else {
echo "Directory does not exists";
}
以前可能有人问过这个问题,但我在之前建议的解决方案中找不到解决方案。我是 PHP 的新手,我正在尝试将扩展名为 .zip 的文件移动到子文件夹。我在源文件夹中循环查找特定文件后,无法使用 rename() 方法将文件移动到子文件夹中。
<?php
$updatesFolder = realpath('C:\xampp\htdocs\project\updates');
$archiveFolder = realpath('C:\xampp\htdocs\project\updates\archive');
if (file_exists($updatesFolder) && is_dir($updatesFolder)) {
// Get the files of the directory as an array
$scan_arr = scandir($updatesFolder);
$files_arr = array_diff($scan_arr, array('.','..') );
//echo "<pre>"; print_r( $files_arr ); echo "</pre>";
// Get each files of directory with line break
foreach ($files_arr as $file) {
//Get the file path
$file_path = $updatesFolder.$file;
//echo $file_path;
// Get the file extension
$file_ext = pathinfo($file_path, PATHINFO_EXTENSION);
if ($file_ext=="zip") {
$data = $file;
$dirHandle = opendir($updatesFolder);
$dirHandle2 = opendir($archiveFolder);
while ($file = readdir($dirHandle)) {
if ($file==$data) {
//unlink($updatesFolder.'/'.$file);
//var_dump ($data);
rename($updatesFolder , $archiveFolder);
}
}
}
}
} else {
echo "Directory does not exists";
}
?>
里面有很多不必要的代码,我想是通过多次尝试修复它。
基本上主要问题是您必须一次移动一个文件,按名称
$updatesFolder = realpath('./database');
$archiveFolder = realpath('./database/archive');
echo $updatesFolder . PHP_EOL . $archiveFolder . PHP_EOL;
if (file_exists($updatesFolder) && is_dir($updatesFolder)) {
$scan_arr = scandir($updatesFolder);
$files_arr = array_diff($scan_arr, array('.','..') );
foreach ($files_arr as $file) {
if ("zip" == pathinfo($file, PATHINFO_EXTENSION)) {
rename($updatesFolder.'/'.$file , $archiveFolder.'/'.$file);
}
}
} else {
echo "Directory does not exists";
}