Для работы с файлами в 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('Такой файл отсутствует.');
Запросы на выборку из БД в Delphi с использованием компонента ADOQuery
Изменение цвета ячеек Delphi Stringgrid
Функция DeleteFile в Delphi, описание и примеры
В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.