Operacje we/wy na plikach w PHP

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

Listing 1
  1. <?php
  2. $file = fopen("file.txt", 'w+'); // otwieranie pliku do odczytu i zapisu
  3. echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // ftell służy do odczytania pozycji wskaźnika pliku
  4. fwrite($file, "tekstn"); // fwrite służy do zapisu danych do pliku
  5. 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
  6. fwrite($file, "tekst2"); // zapis kolejnego tekstu
  7. fseek($file, 0); // ustawienie wskaźnika za pomocą fseek na początku pliku
  8. echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // wyświetlenie bieżącej pozycji wskaźnika
  9. fseek($file, 0, SEEK_END); // ustawienie położenia wskaźnika na końcu pliku
  10. echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // wyświetlenie położenia wskaźnika
  11. fseek($file, 5); // ustawienie wskaźnika na 5 znaków od początku pliku
  12. fseek($file, 5, SEEK_CUR); // przesunięcie wskaźnika o 5 znaków względem bieżącej pozycji
  13. echo("<p>Położenie wskaźnika w pliku: " . ftell($file) . "</p>"); // wyświetlenie wyniku przesunięcia
  14. fseek($file, 0, SEEK_END); // ustawienie wskaźnika na koniec pliku
  15. $size = ftell($file); // odczyt długości pliku
  16. fseek($file, 0); // ustawienie wskaźnika pliku na początek
  17. echo("<p>Odczyt danych z pliku: " . fread($file, $size) . "</p>"); // odczyt całego pliku
  18. fclose($file); // zamykanie pliku
  19. ?>

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

Komentarze