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
Tworzy i otwiera nowy plik. Plik jest
nazwą przekazaną za pomocą polecenia
Assign.
Rewrite(plik);
Reset
Otwiera istniejący plik z nazwą
przekazaną do Plik poleceniem Assign.
Reset(plik);
Reset
Otwiera plik do dopisywania.
Plik musi być tekstowy i musi istnieć, w
przeciwnym razie powstanie błąd.
Append(plik: Text);
Append
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.