TFileStream/pl
│
Deutsch (de) │
English (en) │
français (fr) │
polski (pl) │
TFileStream jest potomkiem klasy TStream, który pobiera/przechowuje swoje dane z/w pliku na dysku.
Strumień plikowy
Strumień plikowy (Filestream) to sposób na łatwe i szybkie przetwarzanie plików, jest idealny do przetwarzania plików o dowolnym rozmiarze.
TFileStream nie zapewnia buforowania, więc jeśli dostęp do części pliku jest powtarzany, należy go załadować do bufora. Ponadto nie powinien być odczytywany sekwencyjnie bajt po bajcie, ale zawsze w blokach, jeśli to możliwe. Aby uzyskać najwyższą prędkość odczytu przy dużych plikach, rozmiar bloku powinien być oparty na rozmiarze strony systemu operacyjnego.
Stałe dostępu do plików
Poniższe stałe określają sposób dostępu do pliku. Stałe zaczynające się od fmShare można zawsze określić, ale nie są obsługiwane przez wszystkie systemy operacyjne.
Stała | Wartość | Opis |
---|---|---|
fmCreate | 65280 | Tworzy nowy plik |
fmOpenRead | 0 | Otwiera plik do odczytu |
fmOpenWrite | 1 | Otwiera plik do zapisu |
fmOpenReadWrite | 2 | Otwiera plik do odczytu i zapisu |
fmShareDenyWrite | 32 | Zabrania zapisywania, jeśli plik jest już otwarty |
fmShareCompat | 0 | Otwiera plik w trybie zgodności z udziałami DOS |
fmShareExclusive | 16 | Zablokuj plik do wyłącznego użytku; inne procesy nie mogą uzyskać dostępu do pliku |
fmShareDenyWrite | 32 | Zablokuj plik do zapisu; inne procesy mogą otwierać plik tylko do odczytu |
fmShareDenyRead | 48 | Zablokuj plik do odczytu; inne procesy mogą jedynie zapisywać dane |
fmShareDenyNone | 64 | Nie blokuj pliku; inne procesy mogą kontynuować odczytywanie i zapisywanie do pliku |
Przykłady użycia
- Wczytaj cały plik fName i zwróć jako ciąg string.
uses
Classes, SysUtils;
function ReadFromFileStream(fName: string): string;
var
stream: TFileStream;
begin
// otwiera plik do odczytu i jednocześnie blokuje go przed dostępem do zapisu
stream := TFileStream.Create(fName, fmOpenRead or fmShareDenyWrite);
try
SetLength(Result, stream.Size);
stream.Read(Result[1], stream.Size);
finally
stream.Free;
end;
end;
- Zapisz ciąg string txt do pliku fName.
uses
Classes, SysUtils;
procedure SaveToFileStream(fName, txt: string);
var
stream: TFileStream;
size: longint;
begin
stream := TFileStream.Create(fName, fmCreate);
size := Length(txt);
try
stream.Position := 0;
stream.Write(txt[1], size);
finally
stream.Free;
end;
end;