Дата и время создания файла
Самый простой способ знакомства с возрастом файла заключается в использовании функции:
function FileAge(const FileName: string): Integer;
Как видите, для этого достаточно передать путь и имя файла в параметр FileName. Еще один метод, выполняющий аналогичную задачу:
function FileGetDate (Handle: Integer): Integer;
Однако здесь вместо имени требуется указатель на файл. Другими словами, последний должен быть открыт методом FileOpen() или создан методом FileCreate(). Оба метода возвращают дату не в привычном для нас формате TDateTime, а в виде структуры даты-времени, принятой в Windows. Поэтому для приведения результата к понятному для языка Pascal виду применяется метод:
function FileDateToDateTime(FileDate: Integer): TDateTime;
Существует функция, решающая и обратную задачу:
function DateTimeToFileDate(DateTime: TDateTime): Integer;
varFileName : string;
Age : INTEGER;
Begin
FileName:='C:\Autoexec.bat';
Age:=FileAge(FileName);
WriteLn(Age);
WriteLn(DateTimeToStr(FileDateToDateTime(Age)));
ReadLn;
End.
Для того чтобы назначить файлу новое время и дату, понадобится метод:
function FileSetDate(Handle: Integer; Age: Integer): Integer;
var FileName : string;
F,Age : INTEGER;
. . .
Age:=DateTimeToFileDate(Now);
F:=FileOpen(FileName, fmOpenReadWrite);
FileSetDate(F, Age);
FileClose(F);
Атрибуты файла
В языке Pascal объявлено два метода для работы с атрибутами файла. За чтение и установку атрибутов отвечают соответственно методы:
function FileGetAttr(const FileName: string): Integer;
functionFileSetAttr(const FileName: string; Attr: Integer): Integer;
В обеих функциях FileName – имя файла. Во втором методе назначение атрибутов выполняется с помощью параметра Attr. Существующие типы атрибутов представлены в табл. 4.5.
Таблица 4.5. Атрибуты файла
Атрибут | Значение | Описание |
faReadOnly faHidden faSysFile faVolumeID faDirectory faArchive faAnyFile | $00000001 $00000002 $00000004 $00000008 $00000010 $00000020 $0000003F | Только для чтения Скрытый Системный Диск Каталог Архив Любой |
Контроль атрибутов файла очень полезен при проведении опасных операций с файлами. Приведем листинг программы, демонстрирующей простейший способ защиты системных и скрытых файлов от удаления.
function DeleteMyFile(FileName : string) : Boolean;
var Attr : INTEGER;
Begin
Attr:=FileGetAttr(FileName);
if (Attr and faHidden = 0) or (Attr and faSysFile = 0) then
Begin
DeleteFile(FileName);
Result:=True;
end else Result:=False;
ReadLn;
End.
Наиболее частая операция, связанная с установкой (удалением) атрибута «только для чтения», унифицирована и представлена в лице метода:
function FileSetReadOnly(const FileName: string; ReadOnly: Boolean): Boolean;
Здесь FileName – имя файла, ReadOnly – состояние атрибута.
Размер файла
Зачастую применение входящего в арсенал Delphi метода FileSize() недостаточно удобно, т. к. его единицей измерения является не байт, а запись. Для выяснения размера файла в байтах можно использовать метод из состава Windows API:
FunctionGetFileSizeEx(hFile : HANDLE; pFileSize : Pointer) : Boolean;
Функция снабжена двумя аргументами: hFile – дескриптор файла и hFileSize – указатель на переменную типа INT64, в которую будет записан полученный размер.
var FileName : string;
F : Integer;
Size : INT64;
Begin
FileName:='C:\autoexec.bat';
F:=FileOpen(FileName,fmOpenRead);
Size:=GetFileSize(F, @Size);
WriteLn(Size);
FileClose(F);
ReadLn;
End.
Дата добавления: 2016-03-15; просмотров: 884;