Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 8419 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

Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.