uses System.IOUtils
Список и размер дисков
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TForm1.bGetDisksClick(Sender: TObject); var SDA:TStringDynArray; i:integer; begin Combobox1.Clear; SDA:=Tdirectory.GetLogicalDrives; for i := 0 to High(SDA) do Combobox1.Items.Add(SDA[i]); Combobox1.ItemIndex:=0; end; //Размер диска (на примере диска С это номер 3 функции DiskSize) //Выводим в ListBox ListBox1.Clear; ListBox1.Items.Add( inttostr( DiskSize(3))+' bytes' ) ; |
Сбор сведений о каталогах и файлах
1 2 3 4 5 6 7 8 9 |
procedure TForm1.GetDirsAndFilesClick(Sender: TObject); var SDA:TStringDynArray; i:integer; begin SDA:=TDirectory.GetFileSystemEntries('C:\','*.*'); ListBox1.Clear; for i := 0 to High(SDA) do ListBox1.Items.Add(SDA[i]); end; {Также полезные функции GetFiles и GetDirectories} |
Проверка существования диска / директории / файла
1 2 3 4 5 6 7 8 9 10 11 |
procedure TForm1.DriveDirectoryFileExistsClick(Sender: TObject); begin if TPath.DriveExists('C:\') then Showmessage('Drive Exists'); if TDirectory.Exists('C:\Test') then Showmessage('Directory Exists'); if TFile.Exists('C:\Test\test.txt') then Showmessage('File Exists'); end; |
Создание, удаление, копирование и перемещение
Создание директории
1 2 3 4 5 |
procedure TForm1.CreateDirClick(Sender: TObject); begin if not TDirectory.Exists('C:\Test\Test1') then Tdirectory.CreateDirectory('C:\Test\Test1'); end; |
Удаление директории
1 2 3 4 5 6 |
procedure TForm1.DeleteDirClick(Sender: TObject); begin if TDirectory.Exists('C:\Test\Test1') then Tdirectory.Delete('C:\Test\Test1',true); {Если 2 параметр True, тогда папка удаляется вместе с вложенными элементами} end; |
Копирование директории
1 2 3 4 5 |
procedure TForm1.CopyDirClick(Sender: TObject); begin Tdirectory.Copy('C:\Test','C:\TestCopy'); //Здесь параметры - начальная и конечная директории end; |
Перенос директории
1 2 3 4 |
procedure TForm1.MoveDirClick(Sender: TObject); begin Tdirectory.Move('C:\Test','C:\TestCopy1'); end; |
Для файлов методы аналогичны, только пишем TFile.Create, Tfile.Copy, TFile.Move, TFile.Delete, в случае TFileCreatе создается файловый поток TFileStream.
Также для файлов есть метод TFile.Replace который заменяет один файл другим и создает резервную копию.
Запись в файл и чтение из файла
Запись в файл
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
procedure TForm1.CreateFileWriteToFileClick(Sender: TObject); var fs:TFilestream; fileName:string; buf:integer; begin Filename:='Test'; TDirectory.CreateDirectory('C:\Test'); if Tfile.Exists('C:\Test\'+FileName) then TFile.Delete('C:\Test\'+FileName); fs:=TFile.Create('C:\Test\'+FileName); try Buf:=application.MainForm.Left; fs.Write(Buf,SizeOf(Buf)); Buf:=application.MainForm.Top; fs.Write(Buf,Sizeof(Buf)); finally fs.Free; end; end; |
Чтение из файла
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TForm1.bLoadFromFileClick(Sender: TObject); var fs:TFileStream; Buf:integer; begin if TFile.Exists('C:\Test\Test') then begin fs:=Tfile.Open('C:\Test\Test',TFileMode.fmOpenOrCreate); try fs.Read(Buf,SizeOf(Buf)); Application.MainForm.Left:=Buf; fs.Read(Buf,SizeOf(Buf)); Application.MainForm.Top:=Buf; finally fs.Free; end; end; end; |
Можно работать с текстовыми файлами, а можно с “чистыми байтами”.
Для текстовых файлов есть полезные функции
1 2 |
ReadAllLines (const Path:string):TStringDynArray; WriteAllLines(const Path:string; const Contents:TStringDynArray); |
Для “байтовых”
1 2 |
ReadAllBytes(const Path:string):TBytes; WriteAllBytes(const Path:string; const Contents:TStringDynArray); |
Аттрибуты файла и каталога
Чтение атрибутов файла
1 2 3 4 5 6 7 8 |
procedure TForm1.FileDirAttributesClick(Sender: TObject); var FA:TFileAttributes; begin FA:=TFile.GetAttributes('C:\Test\test'); if TFileAttribute.faHidden in FA then Showmessage('fa Hidden') else showmessage('Not Hidden');; end; |
Установка атрибутов файла
1 2 3 4 5 6 7 8 |
procedure TForm1.SetFileAttributesClick(Sender: TObject); var FA:TFileAttributes; begin FA:=[]; FA:=FA+[TFileAttribute.faHidden,TFileAttribute.faTemporary]; TFile.SetAttributes('C:\Test\test',FA); end; |
Дата и время создания файла и каталога
Здесь полезны следующие методы (подробную справку по ним можно получить скопировав в проект имя метода, нажав на него мышкой и нажав F1)
1 2 3 4 5 6 7 8 |
GetCreationTime SetCreationTime GetLastAccessTime SetLastAccessTime GetLastWriteTime SetLastWriteTime |