Java Datei in String einlesen

Datei in String einlesen

Java bietet keinen einzeiligen Mechanismus, um eine ganze Datei in einen String einzulesen. Wir müssen hierzu ein paar Zeilen mehr programmieren, um den Inhalt einer ganzen Datei in einen einzigen String einzulesen.

Die folgende Methode liest eine Datei in einen String ein. Einen einzeiligen Mechanismus gibt es zwar nicht, aber mit fünf Programmzeilen ist die Sache jetzt auch nicht besonders komplex:


    /**
     * Datei in String einlesen.
     * Sehr einfache, aber unprofessionelle Version:
     * Im Fehlerfall könnte der FileReader geöffnet bleiben (File leak).
     * Für einfache Programme mit kurzer Laufzeit geeignet.
     */
    public void readFile2String(final String fileName) throws java.io.IOException {
        final FileReader fr = new FileReader(new File(fileName));
        final char[] temp = new char[(int) file.length()];
        fr.read(temp);
        fr.close();
        return new String(temp);
    }

Mit dieser Methode können wir nun jederzeit eine Datei in einen String einlesen:

    // ...
    final String data = readFile2String("Beispieldatei.txt");
    System.out.println(data);
    // ...


Zu beachten ist, dass wir eine IOException erhalten, wenn die angegebene Datei nicht gelesen werden kann. Diese müssen wir ggf abfangen. Wenn wir im Falle eines Fehlers keine Exception erhalten möchten, können wir das Beispiel etwas variieren:

Variante, um Datei in String zu lesen

Manchmal möchte man keine Exception bekommen, wenn sich die angegebene Datei nicht öffnen lässt, sondern einfach einen leeren String oder vielleicht auch null. Hierzu müssen wir einfach alle Ausnahmen vom Typ IOException fangen und dann den gewünschten Wert zurückgeben - in diesem Beispiel nehmen wir null.
Um die Methode etwas professioneller zu schreiben, sorgen wir mit dieser Variante noch dafür, dass der FileReader auf jeden Fall geschlossen wird, auch wenn es zu einem Fehler nach dem öffnen der Datei kommen sollte. So bleiben keine Filepointer offen, wenn beim Lesen der Datei in einen String ein Fehler auftritt.


    /**
     * Datei in String einlesen.
     * Beim Auftreten eines IO-Fehlers wird null zurückgeliefert.
     */
    public void readFile2String(final String fileName) {
        FileReader fr = null;
        String result = null; // Default-Wert, falls etwas nicht klappen sollte
        try {
            fr = new FileReader(new File(fileName));
            final char[] temp = new char[(int) file.length()];
            fr.read(temp);
            result = new String(temp);
        } catch (IOException exc) {
            // nichts zu tun, wir geben einfach den default-Wert zurück
        } finally { // auf jeden Fall den FileReader schließen, falls einer existiert
            try {
                if (fr != null) {
                    fr.close();
                }
            } catch (Exception ignore) {
            }
        }
        return result;
    }

Diese Methode kann auch in länger laufenden Anwendungen verwendet werden, weil wir dafür sorgen, dass der FileReader auf jeden Fall geschlossen wird.

Zu beachten ist jetzt lediglich, dass die Verarbeitung von sehr großen Strings in Java ineffektiv sein kann, insbesondere wenn Sie mit String-Konkatenationen arbeiten werden. Wenn Performance wichtig ist, kann es nachteilig sein, eine Datei in einen String zu lesen.



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren