Sign in Join
Wiki copytemporary

fileutil/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: fileutil/ru

OldNewLine
1+Модуль **fileutil** содержит функции и процедуры, обеспечивающие совместимость с одноименным (FileUtil) модулем Delphi. Файловые процедуры, работающие с именами файлов, которые содержат символы UTF8, находятся в модуле [[LazFileUtils]].
2+
3+``` pascal
4+ // атрибуты и состояния файлов
5+ function CompareFilenames(const Filename1, Filename2: string): integer; inline;
6+ function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline;
7+ function CompareFilenames(const Filename1, Filename2: string; ResolveLinks: boolean): integer;
8+ function CompareFilenames(Filename1: PChar; Len1: integer; Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer;
9+ function FilenameIsAbsolute(const TheFilename: string):boolean; inline;
10+ function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline;
11+ function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline;
12+ procedure CheckIfFileIsExecutable(const AFilename: string); inline;
13+ procedure CheckIfFileIsSymlink(const AFilename: string); inline;
14+ function FileIsReadable(const AFilename: string): boolean; inline;
15+ function FileIsWritable(const AFilename: string): boolean; inline;
16+ function FileIsText(const AFilename: string): boolean; inline;
17+ function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline;
18+ function FileIsExecutable(const AFilename: string): boolean; inline;
19+ function FileIsSymlink(const AFilename: string): boolean; inline;
20+ function FileIsHardLink(const AFilename: string): boolean; inline;
21+ function FileSize(const Filename: string): int64; overload; inline;
22+ function GetFileDescription(const AFilename: string): string; inline;
23+ function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; // если ссылка "битая" то возвращено будет значение ''
24+ function TryReadAllLinks(const Filename: string): string; // если ссылка "битая" то возвращено будет значение Filename
25+
26+ // директории
27+ function DirPathExists(const FileName: String): Boolean; inline;
28+ function ForceDirectory(DirectoryName: string): boolean; inline;
29+ function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean;
30+ function ProgramDirectory: string;
31+ function DirectoryIsWritable(const DirectoryName: string): boolean; inline;
32+
33+ // составляющие части имён файлов
34+ function ExtractFileNameOnly(const AFilename: string): string; inline;
35+ function ExtractFileNameWithoutExt(const AFilename: string): string;
36+ function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; overload; inline;
37+ function CompareFileExt(const Filename, Ext: string): integer; overload; inline;
38+ function FilenameIsPascalUnit(const Filename: string): boolean;
39+ function AppendPathDelim(const Path: string): string; inline;
40+ function ChompPathDelim(const Path: string): string; inline;
41+ function TrimFilename(const AFilename: string): string; inline;
42+ function CleanAndExpandFilename(const Filename: string): string; inline;
43+ function CleanAndExpandDirectory(const Filename: string): string; inline;
44+ function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;
45+ function CreateRelativePath(const Filename, BaseDirectory: string; UsePointDirectory: boolean = false; AlwaysRequireSharedBaseFolder: Boolean = True): string; inline;
46+ function CreateAbsolutePath(const Filename, BaseDirectory: string): string;
47+ function FileIsInPath(const Filename, Path: string): boolean;
48+ function FileIsInDirectory(const Filename, Directory: string): boolean;
49+
50+ // поиск файлов
51+ type
52+ TSearchFileInPathFlag = (
53+ sffDontSearchInBasePath,
54+ sffSearchLoUpCase
55+ );
56+ TSearchFileInPathFlags = set of TSearchFileInPathFlag;
57+ const
58+ AllDirectoryEntriesMask = '*';
59+
60+ function GetAllFilesMask: string; inline;
61+ function GetExeExt: string; inline;
62+ function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): string;
63+ function SearchAllFilesInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): TStrings;
64+ function FindDiskFilename(const Filename: string): string;
65+ function FindDiskFileCaseInsensitive(const Filename: string): string;
66+ function FindDefaultExecutablePath(const Executable: string; const BaseDir: string = ''): string;
67+
68+ type
69+ TFileIterator = class
70+ private
71+ FPath: String;
72+ FLevel: Integer;
73+ FFileInfo: TSearchRec;
74+ FSearching: Boolean;
75+ function GetFileName: String;
76+ public
77+ procedure Stop;
78+ function IsDirectory: Boolean;
79+ public
80+ property FileName: String read GetFileName;
81+ property FileInfo: TSearchRec read FFileInfo;
82+ property Level: Integer read FLevel;
83+ property Path: String read FPath;
84+ property Searching: Boolean read FSearching;
85+ end;
86+
87+ TFileFoundEvent = procedure (FileIterator: TFileIterator) of object;
88+ TDirectoryFoundEvent = procedure (FileIterator: TFileIterator) of object;
89+ TDirectoryEnterEvent = procedure (FileIterator: TFileIterator) of object;
90+
91+ TFileSearcher = class(TFileIterator)
92+ private
93+ FMaskSeparator: char;
94+ FFollowSymLink: Boolean;
95+ FOnFileFound: TFileFoundEvent;
96+ FOnDirectoryFound: TDirectoryFoundEvent;
97+ FOnDirectoryEnter: TDirectoryEnterEvent;
98+ FFileAttribute: Word;
99+ FDirectoryAttribute: Word;
100+ procedure RaiseSearchingError;
101+ protected
102+ procedure DoDirectoryEnter; virtual;
103+ procedure DoDirectoryFound; virtual;
104+ procedure DoFileFound; virtual;
105+ public
106+ constructor Create;
107+ procedure Search(const ASearchPath: String; ASearchMask: String = '';
108+ ASearchSubDirs: Boolean = True; CaseSensitive: Boolean = False);
109+ public
110+ property MaskSeparator: char read FMaskSeparator write FMaskSeparator;
111+ property FollowSymLink: Boolean read FFollowSymLink write FFollowSymLink;
112+ property FileAttribute: Word read FFileAttribute write FFileAttribute default faAnyfile;
113+ property DirectoryAttribute: Word read FDirectoryAttribute write FDirectoryAttribute default faDirectory;
114+ property OnDirectoryFound: TDirectoryFoundEvent read FOnDirectoryFound write FOnDirectoryFound;
115+ property OnFileFound: TFileFoundEvent read FOnFileFound write FOnFileFound;
116+ property OnDirectoryEnter: TDirectoryEnterEvent read FOnDirectoryEnter write FOnDirectoryEnter;
117+ end;
118+
119+ function [[FindAllFiles/ru|FindAllFiles]]( const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True): TStringList;
120+ function FindAllDirectories(const SearchPath: string; SearchSubDirs: Boolean = True): TStringList;
121+
122+ // копирование файлов или целого дерева каталогов
123+ function [[CopyFile/ru|CopyFile]](const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;
124+ function [[CopyFile/ru|CopyFile]](const SrcFilename, DestFilename: string; PreserveTime: boolean): boolean;
125+ function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean;
126+
127+ // действия с файлами
128+ function ReadFileToString(const Filename: string): string;
129+ function GetTempFilename(const Directory, Prefix: string): string; inline;
130+
131+ // основные функции, подобные функциям из RTL, но работающие с UTF-8 вместо системной кодировки
132+ // для AnsiToUTF8 и UTF8ToAnsi требуется менеджер с поддержкой widestring в системах Linux, BSD, MacOSX
133+ // но обычно эти системы используют UTF-8 в качестве системной кодировки, поэтому менеджер с поддержкой widestring не требуется.
134+ function NeedRTLAnsi: boolean; inline;// true if system encoding is not UTF-8
135+ procedure SetNeedRTLAnsi(NewValue: boolean); inline;
136+ function UTF8ToSys(const s: string): string; inline;// as UTF8ToAnsi but more independent of widestringmanager
137+ function SysToUTF8(const s: string): string; inline;// as AnsiToUTF8 but more independent of widestringmanager
138+ function ConsoleToUTF8(const s: string): string; inline;// converts OEM encoded string to UTF8 (used with some Windows specific functions )
139+ function UTF8ToConsole(const s: string): string; inline;// converts UTF8 string to console encoding (used by Write, WriteLn)
140+
141+ // файловые операции
142+ function FileExistsUTF8(const Filename: string): boolean; inline;
143+ function FileAgeUTF8(const FileName: string): Longint; inline;
144+ function DirectoryExistsUTF8(const Directory: string): Boolean; inline;
145+ function ExpandFileNameUTF8(const FileName: string): string; inline;
146+ function ExpandUNCFileNameUTF8(const FileName: string): string;
147+ function ExtractShortPathNameUTF8(Const FileName : String) : String;
148+ function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline;
149+ function FindNextUTF8(var Rslt: TSearchRec): Longint; inline;
150+ procedure FindCloseUTF8(var F: TSearchrec); inline;
151+ function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline;
152+ function FileGetAttrUTF8(const FileName: String): Longint; inline;
153+ function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline;
154+ function DeleteFileUTF8(const FileName: String): Boolean; inline;
155+ function RenameFileUTF8(const OldName, NewName: String): Boolean; inline;
156+ function FileSearchUTF8(const Name, DirList : String; ImplicitCurrentDir : Boolean = True): String; inline;
157+ function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline;
158+ function GetCurrentDirUTF8: String; inline;
159+ function SetCurrentDirUTF8(const NewDir: String): Boolean; inline;
160+ function CreateDirUTF8(const NewDir: String): Boolean; inline;
161+ function RemoveDirUTF8(const Dir: String): Boolean; inline;
162+ function ForceDirectoriesUTF8(const Dir: string): Boolean; inline;
163+ function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle; inline;
164+ function FileCreateUTF8(Const FileName : string) : THandle; overload; inline;
165+ function FileCreateUTF8(Const FileName : string; Rights: Cardinal) : THandle; overload; inline;
166+
167+ // работа с параметрами (переменными) окружения
168+ function ParamStrUTF8(Param: Integer): string; inline;
169+ function GetEnvironmentStringUTF8(Index: Integer): string; inline;
170+ function GetEnvironmentVariableUTF8(const EnvVar: string): String; inline;
171+ function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; inline;
172+ function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean = false; CreateDir: boolean = false): string; inline;
173+
174+ // прочее
175+ function SysErrorMessageUTF8(ErrorCode: Integer): String; inline;
176+```
177+
178+---
179+*From the Free Pascal wiki, page "fileutil/ru", as it stood on 2021-06-11 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history