Literatur

File

Die Klasse java.io.File ist nicht nur für die Verwendung von Dateien zuständig, sondern auch für den Umgang mit Verzeichnissen. Über sie kann beispielsweise festgestellt werden, ob eine Datei überhaupt existiert. Sie bietet zusätzliche Methoden an, um Verzeichnisse zu erstellen oder Dateien zu löschen.

Die Klasse File stellt insgesamt vier Konstruktoren zur Verfügung. Wir wollen Ihnen hier zwei der vermutlich am häufigsten verwendeten Konstruktoren vorstellen.

Konstruktor Beschreibung
File(String pathname) Erstellt ein neues Objekt der Klasse File mit dem übergebenen Pfadnamen, dies kann z.B. ein Pfad zu einem Verzeichnis (z.B. c:/windows) sein oder eine Datei (z.B. c:/beispiel.txt)
File(URI uri) Erstellt einen neues Objekt der Klasse File mit der übergebenen URI. URI ist die Abkürzung für Uniform Resource Identifier. Die URI ist z.B. auch bekannt als sogenannte File-URL. Eine URI würde z.B. so aussehen:
file:///c/windows

Wie Sie vielleicht festgestellt haben, wurden hier für die Pfadangaben Slashes verwendet anstatt Backslashes. Wenn Sie sich vielleicht an das Kapitel mit den Ersatzdarstellungen errinnern, wissen Sie noch, dass man in Java,  um einen Backslash darzustellen, zwei Backslashes für die Ersatzdarstellung verwenden müsste. Da wir aber einen Slash in Java anstelle zweier Backslashes bei Pfadangaben verwenden können, ist es sinnvoll, dieses auch zu tun, um Zeichen einzusparen. Dies stellt übrigens auch eine häufige Fehlerquelle für Anfänger dar.

Fangen wir nun einmal mit einem Beispiel an und erstellen uns zunächst einmal über die Klasse File eine Datei auf der Festplatte:

// Import-Anweisung
import java.io.File;
import java.io.IOException;
 
public class ErstelleDatei
{
    public static void main(String[] args)
    {
        // Erzeugung unseres File-Objektes
        File beispielDatei = new File("C:/Beispiel.txt");
        /* Überprüfung, ob die mit dem Pfad assozierte Datei 
           bzw. Verzeichnis existiert */
        if(!beispielDatei.exists())
        {
            try
            {
                // Erstelle Datei auf Festplatte
                boolean wurdeErstellt = beispielDatei.createNewFile();
                // Überprüfung, ob die Datei erstellt wurde
                if(wurdeErstellt)
                {
                    System.out.println("Beispiel.txt wurde erfolgreich" +
                            " auf dem Laufwerk c erstellt");
                }
                else
                {
                    System.out.println("Beispiel.txt wurde nicht erfolgreich" +
                                " auf dem Laufwerk c erstellt");
                }
            }
            catch (IOException ex)
            {
                // Ein Fehler ist aufgetreten.
                ex.printStackTrace();
            }
 
        }
    }
}

Als erstes erzeugen wir uns ein neues Objekt der Klasse File mit der Pfadangabe zu einer Datei namens Beispiel.txt. Hierbei ist zu beachten, dass an der Stelle nur das Java-Objekt erstellt wird und nicht die Datei selbst! Anschliessend wird überprüft, ob der Pfad, der beim Erzeugen des File-Objektes angegeben wurde, auch existiert. Sollte der Pfad nicht existieren, gehen wir in den Anweisungsblock der if-Anweisung. Die Methode exists gibt true zurück, falls der Pfad existiert und false, wenn er nicht existiert. Indem wir ein Ausrufezeichen (vergleiche Kapitel Operatoren) vor die exist-Methode setzen, verneinen wir das Ergebnis der Methode, um den Inhalt der if-Anweisung dann ausführen zu lassen, wenn der Pfad nicht existiert.

Vorm Ausführen des obigen Quelltextes sollte nun die Beispiel.txt-Datei auf der C-Partition Ihrer Festplatte (wir gehen jetzt mal davon aus, dass Sie eine solche haben, ansonsten passen Sie den Pfad entsprechend an) erstellt worden sein, zusätzlich sollte der Text "Beispiel.txt wurde erfolgreich auf dem Laufwerk c erstellt" ausgegeben werden.
Da der Umgang mit Dateien einige Fehler verursachen könnte, muss häufig eine Ausnahmebehandlung eingefügt werden.

Anbei eine Auflistung der wichtigsten Methoden der Klasse File:

Methode Beschreibung
boolean canExecute() Überprüft, ob das File-Objekt für unsere Anwendung ausführbar ist. Falls ja, wird true zurückgegeben, ansonsten false.
boolean canRead() Überprüft, ob das File-Objekt für unsere Anwendung lesbar ist. Falls ja wird true zurückgegeben, ansonsten false.
boolean canWrite() Überprüft ob das File-Objekt für unsere Anwendung beschreibbar ist. Falls ja, wird true zurückgegeben, ansonsten false.
boolean createNewFile() Erstellt eine neue Datei mit dem für das File-Objekt angegebenen Namen. Gibt nach einem erfolgreichen Erstellen der Datei true zurück.
boolean delete() Löscht eine Datei oder ein leeres Verzeichnis. Gibt true zurück, wenn das Löschen erfolgreich war.
boolean exists() Überprüft, ob ein Verzeichnis oder eine Datei existiert. Falls ja, wird true zurückgegeben, ansonsten false.
String getAbsolutePath() Gibt den absoluten (kompletten) Pfad zur Datei oder zum Verzeichnis zurück.
String getName() Gibt entweder den Dateinamen zurück oder das letzte Verzeichnis des absoluten Pfades.
String getParent() Gibt den Pfad des übergeordneten Verzeichnisses als String zurück.
File getParentFile() Gibt direkt das übergeordnete Verzeichnis als File-Objekt zurück.
boolean isAbsolute() Überprüft, ob die Pfadangabe des File-Objektes absolut (true) oder relativ (false) ist
boolean isDirectory() Überprüft, ob die mit dem File-Objekt assoziierte Pfadangabe ein Verzeichnis ist. Falls ja wird true zurückgegeben, ansonsten false.
boolean isHidden()

Überprüft ob das File-Objekt für unsere Anwendung sichtbar ist. Falls ja, wird true zurückgegeben, ansonsten false.

long lastModified()

Gibt die Zeit zurück, wann die Datei bzw. das Verzeichnis zuletzt verändert wurde. Der Rückgabewert long muss dann noch in ein tatsächliches Datum umgewandelt werden. Dies geschieht z.B. über die Klasse Date, die als Konstruktor einen Parameter vom Typ long entgegen nehmen kann.

Bsp.: new Date(zeit).toString() gibt das Datum als String zurück (zeit ist hier die Variable, der das Resultat der Methode lastModified zugewiesen wurde).

String[] list()

Gibt ein Array mit den Pfaden der in unserem mit dem File-Objekt assoziierten Verzeichnis enthaltenen Dateien oder Verzeichnissen in String-Form zurück (vergleichbar mit dem dir-Befehl in der DOS-Kommandozeile).

File[] listFiles() Hat dieselbe Funktionalität wie die Methode list, allerdings wird hier ein Array von File-Objekten zurückgegeben.
static File[] listRoots() Ähnlich listFiles, jedoch werden hier die Systemverzeichnisse zurückgegeben, also z.B. Festplatte C, DVD-Laufwerk D etc.
boolean mkdir() Erstellt ein neues Verzeichnis mit dem für das File-Objekt angegebenen Namen. Gibt nach einem erfolgreichen Erstellen des Verzeichnisses true zurück .
boolean mkdirs() Erstellt alle Verzeichnisse, die nötig sind, um den kompletten Pfad des File-Objektes zu realisieren. Gibt true zurück nach einem erfolgreichen Erstellen der Verzeichnisse.
boolean renameTo(File dest) Ändert den Namen der Datei oder des Verzeichnisses des aktuellen File-Objektes in den Namen des übergebenen File-Objektes.
boolean setExecutable(boolean executable, boolean ownerOnly) Setzt die Datei unseres File-Objektes auf "ausführbar". Der erste Parameter regelt, ob die Datei generell ausführbar ist. Mit dem zweiten Parameter kann eingestellt werden, dass die Datei nur vom Besitzer ausgeführt werden kann.
boolean setReadable(boolean readable, boolean ownerOnly) Setzt die Datei bzw. das Verzeichnis unseres File-Objektes auf "lesbar". Der erste Parameter regelt, ob die Datei generell lesbar ist. Mit dem zweiten Parameter kann eingestellt werden, dass die Datei nur vom Besitzer gelesen werden kann.
boolean setReadOnly() Setzt den Schreibschutz einer Datei oder eines Verzeichnisses unseres File-Objektes.
boolean setWriteable(boolean writeable, boolean ownerOnly) Setzt die Datei/Verzeichnis unseres File-Objektes auf "beschreibbar". Der erste Parameter regelt, ob die Datei generell beschreibbar ist. Mit dem zweiten Parameter kann eingestellt werden, dass die Datei nur vom Besitzer beschrieben werden kann.
String toString() Gibt die Pfadangabe zurück, welche mit dem File-Objekt assoziiert wurde, dies kann auch ein relativer Pfad sein.
URI toURI() Wandelt die Pfadangabe in eine URI-Adresse um.