Java Arbeiten mit Files

Arbeiten mit Files

Java bietet umfassende Möglichkeiten, mit Dateien (Files) zu arbeiten.
Dieses kurze Tutorial soll zeigen, wie einfach die grundlegenden Operationen sind.

Elementare File-Funktionen werden durch die Klase java.io.File angeboten.

Datei-Prüfungen: Verzeichnis, Datei oder nicht vorhanden?

Mit Hilfe der Klasse File kann auf Dateien im Dateisystem zugegriffen werden. Als erstes prüfen wir, ob eine Datei bereits existiert und wenn ja, ob es sich um ein Verzeichnis handelt. Das alles ist zum Beispiel dann sinnvoll, wenn eine neue Datei erzeugt werden soll, aber auf keinen Fall eine bestehende Datei mit gleichem Namen überschrieben werden darf, oder eben um zu prüfen, ob bereits ein Verzeichnis mit dem gleichen Namen exisistiert, weil dann ja die Datei nicht erzeugt werden kann. Das folgende code snippet zeigt, wie diese Fragen mit der Klasse File beantwortet werden:


    // File Objekt anlegen.
    // Dabei wird (noch) keine Operation auf dem Dateisystem ausgeführt;
    // das File-Objekt existiert erstmal nur im Arbeitsspeicher, und tut vorerst nichts:
    File file = new File("dateiName.txt");

    // Prüfen, ob es sich um ein existierendes Verzeichnis handelt:
    if (file.isDir()) {
        System.out.println("Es handelt sich um ein Verzeichnis.");
    } else {
        // Prüfen, ob es sich um eine existierende Datei handelt:
        if (file.exists()) {
            System.out.println("Die Datei existiert bereits.");
        } else {
            System.out.println("Die Datei existiert nicht.");
        }
    }


Datei neu anlegen oder Inhalt ans Ende der bestehnden Datei anfügen

Nachdem wir geprüft haben, ob eine Datei existiert, können wir sie ggf neu anlegen. In unserem einfachen Beispiel schreiben wir einfach einen kurzen Text in die Datei. Für den Fall, daß die Datei bereits existiert, hängen wir den Text ans Ende der bestehenden Datei an (file append):


    // File Objekt anlegen.
    // Dabei wird (noch) keine Operation auf dem Dateisystem ausgeführt;
    // das File-Objekt existiert erstmal nur im Arbeitsspeicher, und tut vorerst nichts:
    File file = new File("dateiName.txt");

    // Prüfen, ob es sich um ein existierendes Verzeichnis handelt:
    if (file.isDir()) {
        System.out.println("Es handelt sich um ein Verzeichnis.");
    } else {
        // Prüfen, ob es sich um eine existierende Datei handelt:
        if (file.exists()) {  // append to file
            PrintWriter out = new PrintWriter(new FileWriter(file, true));
            out.println("Dieser Text steht am Ende der bereits existierenden Datei.");
            out.close();
        } else {  // create new file
            PrintWriter out = new PrintWriter(new FileWriter(file));
            out.println("Dieser Text steht in der neuen Datei.");
            out.close();
        }
    }


Inhalt einer Datei auslesen

Ähnlich einfach wie das Anlegen von Dateien und das Schreiben ist auch das Lesen einer Datei. Das nachfolgende Beispiel zeigt, wie der Inhalt einer Datei gelesen wird; zur Einfachheit wird der Inhalt einfach nach stdout geschrieben.
Ein Detail am Rande: die Klasse File wird hierfür nicht benötigt. Man würde sie brauchen, wenn man zum Beispiel vor dem Auslesen der Datei prüfen wollte, ob sie überhaupt existiert und auch wirklich ein File (und kein Directory) ist (siehe Beispiel oben).


    final BufferedReader reader = new BufferedReader(new FileReader("dateiName.txt"));
    String currentLine = reader.readLine();  // erste Zeile lesen
    while (currentLine != null) {  // weitermachen, solange Dateiende nicht erreicht
        System.out.println(currentLine);  // Inhalt ausgeben
        currentLine = reader.readLine();  // folgende Zeile aus file lesen
    }
    reader.close();



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren