Dateisystem

Funktionen des Dateisystems

Die folgenden Kapitel beschäftigen sich mit den wichtigsten Funktionen, die PHP bereitstellt, beispielsweise zum Bearbeiten von Strings oder zum Auslesen/Schreiben von Dateien. Mit Letzterem beschäftigt sich dieses Kapitel.

Eine Auflistung – mit kurzer Beschreibung aller Funktionen – finden Sie im PHP-Handbuch, welches Sie auf http://www.php.net finden.

Datei öffnen (fopen)

Um eine externe Datei zu manipulieren, müssen Sie sie zuerst öffnen. Dafür ist die Funktion fopen(…) gedacht.

Die Funktion sieht allgemein so aus:

resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]] )

Sie müssen der Funktion den Dateinamen (eine URL ist auch möglich) und den Modus (s.u.) übergeben. Der anderen Parameter sind optional und werden hier nicht näher erklärt.

Die Funktion gibt einen Dateizeiger auf die geöffnete Datei zurück.

Mit dem Modus bestimmen Sie, wie die Datei geöffnet werden soll. Folgende Parameter stehen zur Auswahl:

  • ‘r’ – Öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.
  • ‘r+’ – Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
  • ‘w’ – Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
  • ‘w+’ – Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
  • ‘a’ – Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
    ‘a+’ – Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
  • <?php
    
    $Dateiname = "data.txt";
    $FilePointer = fopen($Dateiname, "r+");
    
    echo$FilePointer;
    
    $FilePointer = fopen("http://www.webmaster-resource.de/index.php", "r");
    
    ?>
    

    Datei lesen (fread)

    Mit der Funktion fread(…) können Sie den Inhalt einer Datei auslesen. Allgemein ist die Funktion folgendermaßen aufgebaut:

    string fread ( resource handle, int length )

    Handle ist der Dateizeiger auf die Datei, die zuvor mit fopen(…) zum Lesen geöffnet wurde. Length gibt an, wie viele Bytes (Zeichen) eingelesen werden sollen (von der Position des Dateizeigers).

    
    <?php
    
    $Dateiname = "data.txt";
    $FilePointer = fopen($Dateiname, "r");
    $Text = fread($FilePointer, "10");
    echo"$Text<br><br>";
    
    /* Mit folgendem 'Trick' wird die ganze Datei eingelesen: */
    
    $FilePointer = fopen($Dateiname, "r");
    $Dateiinhalt = fread($FilePointer, filesize($Dateiname));
    echo$Dateiinhalt;
    
    ?>

    Die Funktion filesize($Dateiname) bestimmt die Größe der Datei und gibt sie zurück.

    Achten Sie darauf, dass die Datei “data.txt” im gleichen Verzeichnis wie die PHP-Datei liegt.

    Datei schließen (fclose)

    Nachdem Sie eine Datei geöffnet haben, sollten Sie sie nach dem Schreiben oder Lesen auch wieder schließen. Das geht einfach mit der Funktion fclose(…); allgemein: bool fclose ( resource handle ).

    <?php
    
    $Dateiname = "data.txt";
    $FilePointer = fopen($Dateiname, "r");
    $Text = fread($FilePointer, "10");
    fclose($FilePointer);
    echo"$Text<br><br>";
    
    /* Mit folgendem 'Trick' wird die ganze Datei eingelesen: */
    
    $FilePointer = fopen($Dateiname, "r");
    $Dateiinhalt = fread($FilePointer, filesize($Dateiname));
    fclose($FilePointer);
    echo$Dateiinhalt;
    
    ?>

    An der Ausgabe ändert sich durch das Schließen nichts.

    Daten in eine Datei schreiben (fwrite)

    Um Daten in eine Datei zu schreiben, können Sie die Funktion fwrite(…) benutzen; allgemein: int fwrite ( resource handle, string string [, int length] ). Handle ist der aktuelle Dateizeiger, an dessen Stelle die Daten geschrieben werden sollen. String ist ein String, der die zu schreibenden Daten enthält. Optional können Sie noch die Länge (Bytes) angeben, nach der mit dem Schreiben aufgehört werden soll. Achten Sie darauf, dass die Datei, in die die Daten geschrieben werden, zum Schreiben geöffnet wurde.

    <?php
    
    $Dateiname = "schreiben.txt";
    $Schreiben = "Hallo Welt";
    $FilePointer = fopen($Dateiname, "w");
    fwrite($FilePointer, $Schreiben);
    fclose($FilePointer);
    
    ?>
    

    Wenn Sie das Script ausführen, erscheint im selben Verzeichnis die Datei “schreiben.txt” mit “Hallo Welt” als Textinhalt. Achten Sie darauf, dass das Verzeichnis, in dem die Datei erstellt werden soll, nicht schreibgeschützt ist!