Средства работы с файлами модуля 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.

TwitterSEO CommunityВаау!News2.ruChippKoricaSMI2Google BookmarksDiggI.uaЗакладки YandexLinkstoreMyscoopCommunizmRu-marksWebmarksRuspaceLinkomaticKli.kzWeb-zakladkaZakladok.netRedditdeliciousMa.gnoliaTechnoratiSlashdotYahoo My WebБобрДобр.ruMemori.rurucity.comМоёМесто.ruMister Wong

Copyright © 2009-2010 Программирование на паскале.