Rename: примеры (PHP)
rename(string $from, string $to, ?resource $context = null): boolФункция rename() в языке PHP предназначена для переименования файла или перемещения файла между директориями. Её использование актуально при работе с файловой системой, когда требуется изменить имя файла или его расположение. Функция возвращает булево значение: true при успешном выполнении операции и false в случае возникновения ошибки.
Синтаксис функции выглядит следующим образом:
rename(string $oldname, string $newname, ?resource $context = null): bool
Параметр $oldname представляет текущий путь к файлу или директории. Параметр $newname задает новое имя или путь. Третий аргумент, $context, является опциональным и описывает контекст потока. Этот параметр используется редко, в основном для работы с обертками потоков.
<?
if (rename('старый_файл.txt', 'новый_файл.txt')) {
echo "Файл переименован.";
} else {
echo "Ошибка переименования.";
}
?>Файл переименован.
<?
$result = rename('документ.pdf', 'архив/документ.pdf');
var_dump($result);
?>bool(true)
<?
$success = rename('папка_старая', 'папка_новая');
echo $success ? 'Директория переименована' : 'Ошибка';
?>Директория переименована
В PHP существуют другие функции для работы с файлами. copy() создает копию файла, сохраняя оригинал. Её применяют, когда исходный файл должен оставаться неизменным. unlink() удаляет файл, что полезно, если требуется не переименовать, а убрать файл. move_uploaded_file() предназначена для безопасного перемещения загруженных через форму файлов. Её используют при обработке данных из суперглобального массива $_FILES.
<?
// Файл защищен от записи
rename('защищенный_файл.txt', 'новое_имя.txt');
?>Warning: rename(защищенный_файл.txt, новое_имя.txt): Permission denied
<?
if (!rename('несуществующий.txt', 'имя.txt')) {
echo "Файл не найден.";
}
?>Файл не найден.
<?
// Папка 'нет_такой' не создана
rename('файл.txt', 'нет_такой/файл.txt');
?>Warning: rename(файл.txt, нет_такой/файл.txt): No such file or directory
В PHP 8.0 функция rename() не претерпела значительных изменений. Однако, в более ранних версиях, в PHP 7.0, была добавлена поддержка переименования между разными устройствами хранения данных. В PHP 8.1 явных изменений в поведении функции не отмечалось. Функция остается стабильной и обратно совместимой.
<?
$old = 'загрузки/фото.jpg';
$new = 'images/фото.jpg';
if (!is_dir('images')) {
mkdir('images', 0755, true);
}
if (rename($old, $new)) {
echo "Файл перемещен в images.";
}
?>Файл перемещен в images.
<?
function safeRename($old, $new) {
if (!rename($old, $new)) {
throw new Exception("Не удалось переименовать файл $old в $new");
}
}
try {
safeRename('данные.txt', 'бэкап/данные.txt');
echo "Успешно.";
} catch (Exception $e) {
echo "Ошибка: " . $e->getMessage();
}
?>Успешно.
<?
$files = ['doc1.txt', 'doc2.txt', 'doc3.txt'];
foreach ($files as $file) {
$newName = 'архив_' . $file;
if (file_exists($file)) {
rename($file, $newName);
}
}
echo "Файлы переименованы.";
?>Файлы переименованы.
<?
$context = stream_context_create();
rename('файл.txt', 'новый.txt', $context);
echo "Использован контекст потока.";
?>Использован контекст потока.
Rename в Python
В Python для переименования файлов используется функция os.rename() или метод replace() из модуля pathlib.
import os
os.rename('старый.txt', 'новый.txt')В Node.js применяют асинхронный метод fs.rename() из модуля fs.
const fs = require('fs');
fs.rename('старый.txt', 'новый.txt', (err) => {
if (err) throw err;
console.log('Файл переименован');
});Rename в MySQL
В MySQL существует оператор RENAME TABLE для переименования таблиц, что не является аналогом работы с файлами, а относится к структуре базы данных.
RENAME TABLE старая_таблица TO новая_таблица;