Sign in Join
Wiki copytemporary

TFileStream/pl: what changed

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

Title: TFileStream/pl

OldNewLine
1+**TFileStream** jest potomkiem klasy [[TStream/pl|TStream]], który pobiera/przechowuje swoje dane z/w pliku na dysku.
2+
3+## Strumień plikowy
4+
5+Strumień plikowy (Filestream) to sposób na łatwe i szybkie przetwarzanie plików, jest idealny do przetwarzania plików o dowolnym rozmiarze.
6+
7+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.
8+
9+# Stałe dostępu do plików
10+
11+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.
12+
13+| Stała | Wartość | Opis |
14+|----|----|----|
15+| fmCreate | 65280 | Tworzy nowy plik |
16+| fmOpenRead | 0 | Otwiera plik do odczytu |
17+| fmOpenWrite | 1 | Otwiera plik do zapisu |
18+| fmOpenReadWrite | 2 | Otwiera plik do odczytu i zapisu |
19+| fmShareDenyWrite | 32 | Zabrania zapisywania, jeśli plik jest już otwarty |
20+| fmShareCompat | 0 | Otwiera plik w trybie zgodności z udziałami DOS |
21+| fmShareExclusive | 16 | Zablokuj plik do wyłącznego użytku; inne procesy nie mogą uzyskać dostępu do pliku |
22+| fmShareDenyWrite | 32 | Zablokuj plik do zapisu; inne procesy mogą otwierać plik tylko do odczytu |
23+| fmShareDenyRead | 48 | Zablokuj plik do odczytu; inne procesy mogą jedynie zapisywać dane |
24+| fmShareDenyNone | 64 | Nie blokuj pliku; inne procesy mogą kontynuować odczytywanie i zapisywanie do pliku |
25+
26+# Przykłady użycia
27+
28+- Wczytaj cały plik *fName* i zwróć jako ciąg string.
29+
30+``` pascal
31+uses
32+ Classes, SysUtils;
33+
34+function ReadFromFileStream(fName: string): string;
35+var
36+ stream: TFileStream;
37+begin
38+ // otwiera plik do odczytu i jednocześnie blokuje go przed dostępem do zapisu
39+ stream := TFileStream.Create(fName, fmOpenRead or fmShareDenyWrite);
40+ try
41+ SetLength(Result, stream.Size);
42+ stream.Read(Result[1], stream.Size);
43+ finally
44+ stream.Free;
45+ end;
46+end;
47+```
48+
49+- Zapisz ciąg string *txt* do pliku *fName*.
50+
51+``` pascal
52+uses
53+ Classes, SysUtils;
54+
55+procedure SaveToFileStream(fName, txt: string);
56+var
57+ stream: TFileStream;
58+ size: longint;
59+begin
60+ stream := TFileStream.Create(fName, fmCreate);
61+ size := Length(txt);
62+ try
63+ stream.Position := 0;
64+ stream.Write(txt[1], size);
65+ finally
66+ stream.Free;
67+ end;
68+end;
69+```
70+
71+## Zobacz także
72+
73+- [[File types/pl|Typy plików]]
74+- [[doc:rtl/classes/tfilestream.html|TFileStream doc]]
75+- [[doc:rtl/classes/tstream.html|TStream doc]]
76+
77+---
78+*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](/wiki-contact).*

Back to history