Samstag, 17. März 2012

Einfache Dateioperationen mit Java

Der Titel sollte eigentlich bereits alles sagen: Einen Ordner, eine Datei anlegen, Informationen abfragen, etwas Text schreiben. Spannend ist etwas anderes, aber auch einfache Dinge will man sich notieren.

Damit wir auf die benötigten Klassen zugreifen können müssen wir zumindest in einem Rundumschlag "import java.io.*" in den Header einfügen. Genauere Informationen bieten Ihnen Ihr freundliches Java-Buch oder Eclipse.

Einen Ordner anlegen

Der Kommentar zu unserem ersten Beispiel sollte alles aussagen. Einzig die Methode "mkdirs": Sie legt bei Bedarf eine gesamte Ordnerhierarchie an. Der kleine Bruder "mkdir" kann da nicht mithalten und löst einen Fehler aus wenn angegebene, übergeordnete Ordner noch nicht vorhanden sind. Bei der Pfadangabe eines Ordner spielt es übrigens keine Rolle ob diese mit einem "/" abgeschlossen wird. Auch die vermischte Verwendung von "/" und korrekt maskiert "\\" ist erlaubt.

/*
* Einen Ordner anlegen und Informationen 
* dazu ausgeben. Eigentlich genuegen die  
* ersten beiden Zeilen Code.
*/
File ordner = new File("d:/loeschMich/test/toast");
boolean istAngelegt = ordner.mkdirs();

if (istAngelegt) {
    System.out.println("Der Ordner " + ordner.getName()
                        + " wurde neu angelegt.");
}
if (!istAngelegt) {
    if (ordner.exists()) {
            System.out.println(ordner.getName() + " im Pfad "
                    + ordner.getParent() + " existiert bereits.");
        }
        if (!ordner.exists()) {
            System.out.println(ordner.getName() + " im Pfad "
                    + ordner.getParent()
                    + " konnte nicht angelegt werden.");
        }
}
Das Anlegen einer Datei sieht ähnlich aus. Wer ohne IDE arbeitet, wundert sich vielleicht warum er ein neues File-Objekt anlegen kann, aber einen Fehler erhält wenn er mit verschiedenen Methoden auf das erzeugte Objekt zugreifen will.
Die Lösung ist einfach: Um sauber auf die unterschiedlichsten Fehler zu reagieren, die bei einem Dateizugriff auftreten können, wird eine Fehlerbehandlung vorausgesetzt. Hier realisiert mit einem try-catch Block.

Schon mutiger: Eine Datei anlegen

Anschließend verwenden wir unsere neue Datei um über den FileWriter etwas in diese Datei zu schreiben. Immer daran denken, dass erst mit dem Aufruf der Methode "flush" der Schreibvorgang ausgelöst wird. Wird der FileWriter mit dem Parameter "true" aufgerufen, wird der Text an die bestehende Datei angehängt.

/*
* Eine Datei anlegen
* Die Anlage des Fileobjekts selbst muss noch nicht in einem 
* try catch Block erfolgen: Die reine Anlage des Objekts ist
* erst mal ohne jede weitere Konsequenz.
*/
File datei = new File(ordner, "wasBinIchJetzt.txt");
try {
    /*
    * Es waere jetzt genauso moeglich wieder einen 
    * Ordner mit datei.mkdirs() anzulegen. 
    * Eine Endung ".xyz" ist auch bei Ordnernamen erlaubt
    */
    datei.createNewFile();
    if (datei.isFile()) {
        System.out.println(datei.getName());
        System.out.println(datei.getParent());
        System.out.println(datei.getAbsolutePath());
        System.out.println(datei.length());
    }
} catch (Exception e) {
        e.printStackTrace();
}

// Text in unsere neue Datei schreiben, bzw. anhaengen
try {
    FileWriter schreibe = new FileWriter(datei, true);
    schreibe.write("...etwas Text\n");
    schreibe.flush();
} catch (Exception e) {
        e.printStackTrace();
}
Wie man sieht gilt Java nicht umsonst als "geschwätzig". Wer aber erlebt hat was bei einfachen Dateizugriffen auf einem Server alles schiefgehen kann, sollte das Java nicht allzu sehr verübeln.

Keine Kommentare:

Kommentar veröffentlichen