Поэтому я использую функцию переименования php, чтобы систематически переименовывать все файлы в определенной папке.
По выходному буферу работает нормально.
Когда я заглядываю в папку, в ней отсутствуют файлы 11-99. Я заменил функцию переименования своей собственной функцией ниже, однако я получаю точно такие же результаты.
Код:
function rename_files($directory){
$path = 'C:\xampp\htdocs\email' . '\\' . $directory . '\\';
$x = 00001;
foreach (glob($path."*") as $filename) {
$newFile = $path . 'list' . $x . '.txt';
$content = file_get_contents($filename); //this function returns the content of a file.
echo "$newFile and old $filename<br>";
unlink($filename);
$file = fopen($newFile, "w");
fwrite($file,$content);
fclose($file);
++$x;
}
}
реальность:
Ваша главная проблема в том, что ваш исходный и целевой каталог одинаковы, а имена старых и новых файлов совпадают.
Просмотр первых двух строк вашего вывода покажет вам проблему. Вновь созданный файл list1.txt удаляется во второй итерации цикла.
Простым, но работающим решением вашей проблемы должно быть создание нового каталога, куда вы перемещаете и переименовываете все файлы (rename
должен работать для этого), а затем удалите пустой каталог источника и замените его временным.
Некоторые из ваших новых имен файлов совпадают со старыми именами файлов.
Вы переименованы list103 (2).txt
в list11.txt
, Это переписал оригинал list11.txt
, Позже вы переименовали list11.txt
в list25.txt
,
В результате оригинал list11.txt
потерян.
Это происходит снова и снова: list1 (2).txt -> list1.txt -> list2.txt
Вам нужно проверить, $newFile
уже существует, и используйте другое имя, которое не существует. Или, возможно, использовать разные соглашения об именах для старых и новых файлов, чтобы они не могли конфликтовать друг с другом.