1
Operacje na plikach
zewnętrznych
Pascal
Marek Pudełko
2
Definicja
• Pascal umożliwia obsługę plików
zewnętrznych – zarówno tekstowych
jak i binarnych.
• Umożliwia realizację następujących
operacji:
– Otwieranie plików
– Czytanie z nich
– Zapisywanie plików
– Dopisywanie do plików.
3
Operacje na plikach
Append
Otwiera plik do dopisywania.
Plik musi być tekstowy i musi
istnieć, w przeciwnym razie
powstanie błąd.
Append(plik: Text);
Reset
Otwiera istniejący plik z nazwą
przekazaną do Plik poleceniem
Assign.
Reset(plik);
Reset
Tworzy i otwiera nowy plik.
Plik jest nazwą przekazaną za
pomocą polecenia Assign.
Rewrite(plik);
4
5
Assign i Close
• Assign(plik : String);
– Procedura przypisuje zmiennej plikowej plik
plik o nazwie nazwa.
– Plik może być zmienną typu Text. By
odwoływać się do jakiegoś pliku, zawsze
należy najpierw użyć procedury Assign.
Przy dalszych operacjach pliki są
identyfikowane przy pomocy zmiennej
plikowej.
• Close(var plik : file);
– Procedura służąca do zamykania otwartego
pliku dowolnego typu.
6
Budowa programu do operacji na
plikach
program do_pliku;
var z:text;
{zmienne typu plikowego}
begin
assign (z,‘pliczek.txt');
{skojarzenie zmiennej tekstowej z nazwa pliku}
rewrite (z); {przygotowanie pliku do zapisu}
append (z); {przygotowanie pliku do zapisu}
reset (z); {przygotowanie pliku do zapisu}
{…}
close (z2);
{zamkniecie pliku po zakonczeniu pracy z nim}
readln;
end.
7
program program_zapisujacy_do_pliku;
var z1,z2:text;
imie,nazwisko,adres,miasto:string;
begin
assign (z2, 'wynik.txt'); {skojarzenie zmiennej tekstowej z nazwa pliku}
rewrite (z2); {przygotowanie pliku do zapisu}
writeln ('Program zapisuje do pliku dane adresowe uzytkownika');
write ('Podaj swoje imie: ');
readln (imie);
write ('Podaj swoje nazwisko: ');
readln (nazwisko);
write ('Podaj swoj adres: ');
readln (adres);
write ('Podaj swoje miasto: ');
readln (miasto);
writeln (z2,imie); {zapis do lpliku}
writeln (z2,nazwisko);
writeln (z2,adres);
writeln (z2,miasto);
close (z2); {zamkniecie pliku po zakonczeniu pracy z nim}
readln;
end.
8
program program_czytajacy_z_pliku;
var z1,z2:text;
imie,nazwisko,adres,miasto:string;
begin
assign (z2, 'wynik.txt'); {skojarzenie zmiennej tekstowej z nazwa pliku}
reset (z2); {przygotowanie pliku do czytania}
readln (z2,imie); {odczyt z pliku}
readln (z2,nazwisko);
readln (z2,adres);
readln (z2,miasto);
writeln ('Program wczytuje z pliku dane adresowe uzytkownika');
write ('Twoje imie to: ');
writeln (imie);
write ('Twoje nazwisko to: ');
writeln (nazwisko);
write ('Twoj adres to: ');
writeln (adres);
write ('Twoje miasto to: ');
writeln (miasto);
close (z2); {zamkniecie pliku po zakonczeniu pracy z nim}
readln;
end.
9
Rozmiar pliku
• FileSize(var plik : file) : LongInt;
– Funkcja zwraca wielkość pliku. Plik nie może być tekstowy i
musi być otwarty (np. poleceniem Reset). Wartość zwracana
jest w jednostkach, z których składa się plik.
• Przykład
var plik: file of real;
r: real;
begin
Assign(plik,'liczby.tmp');
Rewrite(plik);
r:=1;
Write(plik, r, r); {zapisanie dwóch liczb do
pliku}
Writeln(FileSize(plik));{2}
Close(plik);
end.
10
Aktualna pozycja pliku
• FilePos(var plik : file) : LongInt;
– Funkcja zwraca aktualną pozycję pliku. Plik nie może być
tekstowy i musi być otwarty (np. poleceniem Reset). Wartość
zwracana jest w jednostkach, z których składa się plik.
• Przykład
var plik: file of real;
r:real;
begin
Assign(plik,'liczby.tmp');
Rewrite(plik);
r:=1;
Write(plik, r, r); {zapisanie dwóch liczb do
pliku}
Writeln(FilePos(plik)); {2}
Close(plik);
end.
11
Szukanie w pliku
• Seek (F;N:Longint);
– Ustawia pozycję w pliku na N.
• SeekEof : boolean;
– Funkcja zwraca wartość TRUE jeśli jest
koniec pliku.
• SeekEoln : boolean;
– Funkcja przyjmuje wartość TRUE jeśli jest
koniec linii w pliku.
12
Koniec pliku
• Eof(var plik: file ):Boolean
– Funkcja zwraca wartość logiczną True jeśli osiągnięty
został koniec pliku.
• Przykład
var
F: text;
Ch:char;
begin
Assign(F,'c:\autoexec.bat');
Reset(F);
while not Eof(F) do
Begin
Read(F, Ch);
Write(Ch); {pokaż zawartość pliku}
End;
end.
13
Znacznik końca pliku
• Eoln(var plik: file): Boolean
– Zwraca wartość logiczną True jeśli
wskaźnik pozycji pliku wskazuje na koniec
wiersza.
14
Skrócenie pliku
• Truncate(F)
– Skraca plik począwszy od aktualnej
pozycji.
15
Zmiana nazwy pliku
• Rename( F;NowaNazwa)
– Zmienia nazwę pliku.