СтатьиПрограммирование в Delphi

Копирование, удаление, перемещение, переименование и проверка на наличие файла в Delphi

Для работы с файлами в Delphi есть богатый набор функций, позволяющий выполнять все необходимые действия с файлами. Механизм использования каждой из такой процедуры или функции достаточно прост – указание директории и имени файла, над которым производится действие и, иногда, указание дополнительных параметров для дополнительного контроля выполняемых операций.

В данной статье описываются возможности манипуляции с уже существующими файлами. Механизмы создания, открытия и сохранения файла описаны в статье "Создание и работа с текстовыми файлами в Delphi".

Копирование файла

Копирование файла выполняется функцией CopyFile, параметрами которой служит путь к исходному файлу и путь, где должна быть расположена копия файла.

Третий параметр определяет, будет ли перезаписан файл в случае, если файл с таким именем уже есть. Если параметр задан значением True, то в случае если файл уже есть, функция выполнять копирование не будет и вернет значение False. Таким образом, можно добавить дополнительную проверку и защитить информацию от потери из-за перезаписи файла.

if CopyFile('myfile.txt', 'newfile.txt', true) then
ShowMessage('Файл успешно скопирован.')
else
ShowMessage('Ошибка: файл не был скопирован.');

Если третьим параметром указано значение False, то функция будет копировать файл с перезаписью, если файл уже есть и в результате всегда возвращать значение True.

CopyFile('myfile.txt', 'newfile.txt', false);

Так как пути к файлам задаются параметром типа PChar, то использование строковых переменных в этой функции будет вызывать ошибку. Такая проблема может произойти, если, например, путь к файлу задавать в компонентах Edit или OpenDialog. В этом случае, нужно выполнить приведение типов данных к нужному виду:

CopyFile(PChar(MyEdit.text), PChar(MyOpenDialog.FileName), false);

Удаление файла

Удаление файла в Delphi осуществляется с помощью функции DeleteFile. В качестве единственного параметра задается путь удаляемого файла.

DeleteFile('myfile.txt');

В результате своего выполнения функция DeleteFile возвращает результат логического типа: true, если файл был удален; false, если файл не был удален (например, если файл отсутствует).

if DeleteFile('myfile.txt') then
ShowMessage('Файл удален успешно.')
else
ShowMessage('Ошибка: файл не был удален.');

Перемещение файла

Чтобы при перемещении не выполнять два действия – копирование и удаление исходного файла, в Delphi имеется специальная функция MoveFile. Два параметра функции указывают путь исходного файла, и путь, куда должен быть перемещен файл.

MoveFile('myfile.txt', 'newpath/myfile.txt');

Аналогично уже рассмотренным функциям, эта возвращает значение true, при успешном выполнении своих операций и false, при возникновении ошибки. Ошибка может возникнуть, например, при отсутствии исходного файла или наличии файла с заданным именем в новой директории.

if MoveFile('myfile.txt', 'newpath/myfile.txt') then
ShowMessage('Файл успешно перемещен.')
else
ShowMessage('Ошибка: файл не был перемещен.');

При использовании компонентов и строковых переменных, здесь так же потребуется приведение типов данных:

MoveFile(PChar(MyEdit.text), PChar(MyOpenDialog.FileName));

Это функцию можно так же использовать для переименования файла, указав новое имя файла и сохранив старый путь.

MoveFile('myfile.txt', 'newfile.txt');

Кроме того, функцию MoveFile можно применить для переименования или перемещения папки со всеми вложенными в нее файлами. В приведенном ниже примере, папка "myfolder" будет перемещена в поддиректорию "newfolder1" и переименована в "newfolder2".

MoveFile('myfolder', 'newfolder1/newfolder2');

Переименование файла

Для переименования файла используется функция RenameFile. Строковые параметры здесь так же содержат путь исходного файла и путь файла с новым именем.

RenameFile('myfile.txt', 'newfile.txt');

Функция переименования так же возвращает результат своего выполнения логическим значением.

if RenameFile('myfile.txt', 'newfile.txt') then
ShowMessage('Файл успешно переименован.')
else
ShowMessage('Ошибка: файл не был переименован.');

Учитывая, что во втором параметре можно указать не только новое имя файла, но и новый путь, эту функцию можно так же использовать для перемещения файла. Данную функцию так же можно использовать для переименования и перемещения папок со всеми их вложениями.

MoveFile('myfile.txt', 'newpath/myfile.txt');

Проверка на наличие файла

Часто перед выполнением каких либо действий с файлом, необходимо убедиться в его существовании на диске. Для этих целей используется функция FileExists. Единственный строковый параметр функции содержит путь к файлу. При своем выполнении функция вернет значение true, если указанный файл есть. False, если файла нет.

if FileExists('myfile.txt') then
ShowMessage('Указанный файл существует.')
else
ShowMessage('Такой файл отсутствует.');


Комментарии

Имя:
Текст комментария:
* В комментариях запрещено публиковать рекламные объявления. Сообщения, содержащие ссылки на сторонние ресурсы добавляется в скрытом режиме. Они будут открыты, если не нарушают установленных правил, после проверки.
Защита от спам-роботов (* Обязателельно укажите ответ на простой вопрос ниже.)
Сколько ножек у трeхногого табурета? (цифра)