Средства работы с файлами модуля SysUtils
В модуле SysUtils определены функционально такие же операции, что и в модуле System, но с большими возможностями. Поддерживаются:
- Имена файлов напрямую.
- Атрибуты файлов.
- Выбор режима работы с файлами.
Атрибуты файлов
Атрибут | Значение |
faReadOnly | Только для чтения |
faHidden | Скрытый |
faSysFile | Системный |
faVolumeID | Метка диска |
faDirectory | Каталог |
faArchive | Архивный |
faAnyFile | Любой |
Атрибуты можно объединять с помощью операции or: faHidden or faSysFile.
Режимы файлов
Режим | Значение |
Флаги открытия | |
fmCreate | Файл создается |
fmOpenRead | Только для чтения |
fmOpenWrite | Только для записи |
fmOpenReadWrite | Для чтения и записи |
Флаги совместного использования файла | |
fmShareExclusive | Запретить другим доступ |
fmShareDenyWrite | Запретить другим запись |
fmShareDenyRead | Запретить другим чтение из файла |
fmShareDenyNone | Разрешить другим все |
Установочные и завершающие операции
Операция | Содержание |
FileExists(FileName) | Функция. Проверяет существование файла с именем FileName. Возвращает True, если файл существует, и False в противном случае. |
FileCreate(FileName); | Функция. Создает файл с именем FileName. Возвращает дескриптор файла. При ошибке возвращается -1. Дескриптор файла – это целое число, с которым ИСР связывает файл. |
FileGetAttr(FileName); |
Функция. Для файла с именем FileName возвращает атрибут Attr.
При ошибке возвращается -1. |
FileSetAttr(FileName, Attr); | Функция. Для файла с именем FileName устанавливает атрибут Attr. При ошибке возвращается -1. |
FileOpen(FileName, Mode); File – файл, Open – открыть, FileName – имя файла Mode – режим. |
Функция. Открывает файл с именем FileName в режиме Mode. Возвращает дескриптор открытого файла.
При ошибке возвращается -1. |
FileClose (Handle); File – файл, Close – закрыть, Handle – дескриптор. |
Процедура. Закрывает файл с дескриптором Handle. |
DeleteFile(FileName); Delete – удалить, File – файл, FileName – имя файла |
Функция. Удаляет на диске файл с именем FileName. Возвращает True, если операция прошла успешно, и False в противном случае. |
RenameFile(OldName, NewName); Rename – переименовать, File – файл, OldName – старое имя, NewName – новое имя |
Функция. Изменяет имя файла OldName на NewName. Возвращает True, если файл переименован, или False в противном случае. |
Операции перемещения по файлу
Операция | Содержание |
FileSeek(Handle, Offset, Origin); File – файл, Seek – поиск, Handle – дескриптор, Offset – смещение, Origin – начало. |
Функция. В файле, связанном с дескриптором Handle, смещает маркер на Offset относительно позиции Origin (для Origin возможны: 0 – начало файла, 1 – текущая позиция, 2 – конец файла).
Возвращает новую позицию маркера от начала файла. При ошибке возвращается -1. |
Операции ввода/вывода
Операция | Содержание |
FileRead(Handle, Buffer, Count); File – файл, Read – читать, Handle – дескриптор, Buffer – буфер, Count – счетчик. |
Функция. Читает из файла, связанного с дескриптором Handle, в буфер Buffer Count байт. Возвращает число фактически считанных байтов. При ошибке возвращается -1. |
FileWrite(Handle, Buffer, Count); File – файл, Write – писать, Handle – дескриптор, Buffer – буфер, Count – счетчик. |
Функция. Пишет в файл, связанный с дескриптором Handle, из буфера Buffer Count байт. Возвращает число фактически записанных байтов. При ошибке возвращается -1. |
Специальные операции
Операция | Содержание |
DiskFree(Drive); Disk – диск, Free – свободно, Drive – дисковод. |
Функция. Возвращает размер свободного места на диске Drive в байтах. При ошибке возвращается -1. |
DiskSize(Drive); Disk – диск, Size – размер, Drive – дисковод. |
Функция. Возвращает размер диска Drive в байтах. При ошибке возвращается -1. |
Работа с файлами средствами SysUtils
Пример. Программа выполняет действия:
- Создает в массиве Count случайных чисел.
- Переносит их в файл c именем MyFile.
- Обнуляет массив.
- Возвращает в него Count = 5 чисел из файла.
program WorkFile;
{$mode objfpc}{$H+}
uses SysUtils, RusTrans; // Ссылка на модули
const Count=6; // Константа Count
var
hMyFile:integer; // Дескриптор файла
Buffer:Array[1..Count] of byte; // Буфер
i,Fact:Integer;
begin
hMyFile:=FileCreate(‘MyFile’); // Создать файл
writeln(‘Buffer=’); // Вывести Buffer= на дисплей
Randomize;
for i:=1 to Count do // Заполнить буфер в цикле
begin
Buffer[i]:= Random(100); // Случайное число => в буфер
writeln(‘ ‘, Buffer[i]); // Вывод его на дисплей
end;
Fact:=FileWrite(hMyFile,Buffer,Count);// Запись буфера в файл
writeln(‘Fact=’,Fact); // В файл выведено Fact чисел
readln; // Пауза, чтобы увидеть Fact
writeln(‘Buffer=’); // Вывести Buffer= на дисплей
for i:=1 to Count do // Обнулить буфер в цикле
begin
Buffer[i]:=0; // Обнулить компонент буфера
writeln(‘ ‘,Buffer[i]); // Вывод его на дисплей
end;
readln; // Пауза, чтобы увидеть результат
FileSeek(hMyFile,0,0); // Маркер на начало файла
Fact:=FileRead(hMyFile,Buffer,Count-2);// Чтение из файла в буфер
writeln(‘Buffer=’); // Заголовок на дисплей
for i:=1 to Count do // Буфер на дисплей
begin
writeln(‘ ‘,Buffer[i]);
end;
writeln(‘Fact=’,Fact); // Из файла считано Fact чисел
FileClose(hMyFile); // Закрыть файл
readln; // Пауза, чтобы увидеть результат
end.