Otwieranie i zamykanie plików
Wszystkie funkcje obsługi plików (oprócz tej otwierającej plik)
jako parametr pobierają tzw. „wskaźnik do pliku” (ang.
"file pointer"). Jest to wartość zmiennej określająca otwarty plik.
Jest to niezbędne, ponieważ skrypt może otworzyć jednocześnie wiele
plików i na wszystkich jednocześnie pracować.
Wskaźnik to pliku jest zwracany przez funkcję fopen(
nazwa pliku, string tryb ). Drugi parametr określa
tryb otwarcia pliku. Tryb trzeba dobrać odpowiednio do tego, co się
chce z plikiem robić. Możliwe tryby to:
-
'r'
plik tylko do odczytu; wewnętrzny wskaźnik pliku
umieszczany jest na początku pliku
-
'r+'
plik do odczytu i zapisu; wewnętrzny wskaźnik pliku
umieszczany jest na początku pliku
-
'w'
plik tylko do zapisu; wewnętrzny wskaźnik pliku
umieszczany jest na końcu pliku; zawartość pliku jest
niszczona (długość pliku jest zmieniana na zero); jeśli
plik nie istnieje PHP próbuje go stworzyć
-
'w+'
plik do odczytu i do zapisu; wewnętrzny wskaźnik pliku
umieszczany jest na końcu pliku; zawartość pliku jest
niszczona (długość pliku jest zmieniana na zero); jeśli
plik nie istnieje
-
'a'
plik tylko do zapisu; wewnętrzny wskaźnik pliku
umieszczany jest na końcu pliku; jeśli plik nie istnieje
PHP próbuje go stworzyć
Pozycja "wewnętrznego wskaźnika pliku" określa, w którym miejscu
zaczęłoby się pisać do pliku, gdyby zaczęło się pisać lub czytać z
tego pliku zaraz po otwarciu pliku. Jeśli jest na końcu - to znaczy
że dane dopisywane są na końcu.
Przykład 11.1. Otwarcie pliku do odczytu
<?php $fp = fopen("dane.txt", "r"); ?>
|
Zmienna $fp zawiera teraz wskaźnik do pliku
dane.txt. Wskaźnik ten trzeba podać przy
każdej funkcji, która w jakiś sposób operuje na tym pliku.
Jeśli otworzyliśmy ten plik, to teraz trzeba go jakoś zamknąć.
Jeśli nie zamkniemy pliku ręcznie, to PHP zrobi to za nas po
zakończeniu działania skryptu. Nie sprawia to różnicy jeśli na
stronie operujemy tylko jednym plikiem lub np. po zapisaniu
danych do pliku już się nim nie interesujemy. Inaczej sprawa
wygląda jeśli po zapisaniu danych do pliku chcemy później go
odczytać - dopiero po zamknięciu pliku zmiany w nim będą
widoczne. A do zamknięcia pliku służy funkcja
fclose(int wskaźnik).