Stronę tą wyświetlono już: 8362 razy
Do otwierania pliku w PHP służy funkcja fopen zaś do jego zamknięcia funkcja fclose. Funkcja fopen przyjmuje dwa podstawowe argumentu:
- ścieżkę dostępu do pliku;
- znacznik trybu otwarcia pliku, który może przyjmować następujące wartości:
- 'r' - otwiera plik tylko do odczytu, umieszczając wskaźnik pliku na jego początku;
- 'r+' - otwiera plik do odczytu i zapisu jednocześnie umieszczając wskaźnik pliku na jego początku;
- 'w' - otwiera plik tylko do zapisu usuwając całą jego zawartość, jeżeli taka istniała. Jeżeli plik nie istniał to zostanie podjęta próba jego utworzenia;
- 'w+' - otwiera plik do zapisu i odczytu usuwając całą jego zawartość, jeżeli taka istniała. Jeśli plik nie istniał to zostanie podjęta próba jego utworzenia;
- 'a' - otwiera plik tylko do zapisu umieszczając jego wskaźnik na jego końcu. Jeżeli plik nie istniał, to zostanie podjęta próba jego utworzenia;
- 'a+' - otwiera plik do odczytu i zapisu umieszczając jego wskaźnik na jego końcu. Jeżeli plik nie istniał, to zostanie podjęta próba jego utworzenia;
- 'x' - tworzy i otwiera plik tylko do zapisu umieszczając wskaźnik do niego na jego początku. Jeżeli plik już istnieje wywołanie funkcji fopen z tym parametrem spowoduje błąd;
- 'x+' - tworzy i otwiera plik do odczytu i zapisu umieszczając jego wskaźnik na jego początku. Jeżeli plik już istnieje to wywołanie funkcji fopen z tym parametrem spowoduje błąd.
Oto prosty przykład kodu wykonującego operacje na pliku:
<?php
$file = fopen("file.txt", 'w+'); // otwieranie pliku do odczytu i zapisu
echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // ftell służy do odczytania pozycji wskaźnika pliku
fwrite($file, "tekstn"); // fwrite służy do zapisu danych do pliku
echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // ponowne użycie ftell żeby pokazać, że położenie wskaźnika przesunęło się o długość dodanego tekstu
fwrite($file, "tekst2"); // zapis kolejnego tekstu
fseek($file, 0); // ustawienie wskaźnika za pomocą fseek na początku pliku
echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // wyświetlenie bieżącej pozycji wskaźnika
fseek($file, 0, SEEK_END); // ustawienie położenia wskaźnika na końcu pliku
echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // wyświetlenie położenia wskaźnika
fseek($file, 5); // ustawienie wskaźnika na 5 znaków od początku pliku
fseek($file, 5, SEEK_CUR); // przesunięcie wskaźnika o 5 znaków względem bieżącej pozycji
echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // wyświetlenie wyniku przesunięcia
fseek($file, 0, SEEK_END); // ustawienie wskaźnika na koniec pliku
$size = ftell($file); // odczyt długości pliku
fseek($file, 0); // ustawienie wskaźnika pliku na początek
echo("<p>Odczyt danych z pliku: " . fread($file, $size) . "</p>"); // odczyt całego pliku
fclose($file); // zamykanie pliku
?>
Wynik powyższego kodu:
Położenie wskaźnika w pliku: 0
Położenie wskaźnika w pliku: 6
Położenie wskaźnika w pliku: 0
Położenie wskaźnika w pliku: 12
Położenie wskaźnika w pliku: 10
Odczyt danych z pliku: tekst tekst2