папка — Почему переименование PHP ($ file) все еще удаляет файлы?

Поэтому я использую функцию переименования 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;
}
}

Выход:
Выходной буфер PHP

реальность:

Актуальные файлы, созданные в папке

-1

Решение

Ваша главная проблема в том, что ваш исходный и целевой каталог одинаковы, а имена старых и новых файлов совпадают.

Просмотр первых двух строк вашего вывода покажет вам проблему. Вновь созданный файл list1.txt удаляется во второй итерации цикла.

Простым, но работающим решением вашей проблемы должно быть создание нового каталога, куда вы перемещаете и переименовываете все файлы (rename должен работать для этого), а затем удалите пустой каталог источника и замените его временным.

3

Другие решения

Некоторые из ваших новых имен файлов совпадают со старыми именами файлов.

Вы переименованы list103 (2).txt в list11.txt, Это переписал оригинал list11.txt, Позже вы переименовали list11.txt в list25.txt,

В результате оригинал list11.txt потерян.

Это происходит снова и снова: list1 (2).txt -> list1.txt -> list2.txt

Вам нужно проверить, $newFile уже существует, и используйте другое имя, которое не существует. Или, возможно, использовать разные соглашения об именах для старых и новых файлов, чтобы они не могли конфликтовать друг с другом.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector