Sign in Join
Wiki copytemporary

TFileStream/pl

Deutsch · English · Français · Polski

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

pascal
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;
pascal
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;

Zobacz także


From the Free Pascal wiki, page "TFileStream/pl", as it stood on 2022-01-28 after a change by Slawek, 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.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.