Wie lassen sich in Java Dateirechte setzen? v.6.0

Ab Java 1.6 bietet die Klasse File eine Anzahl überladener Methoden zum Setzen von Dateirechten.

Leider bietet Java keine nativen Methoden, um Unix-artige Dateirechte zu setzen. Dies ist lediglich durch JNI oder Runtime#exec("chmod") möglich. Gleichwohl gibt es die Möglichkeit zu definieren, ob die Lese-, Schreib- und Ausführungsrechte eines File-Objekte nur für den Besitzer oder für alle gesetzt werden sollen. Die drei Rechte werden hierbei durch jeweils eigene Methoden gesetzt, die in der u.a. Liste aufgeführt sind.

Im Beispiel wird der Übersicht halber lediglich demonstriert, wie das Schreiben in eine Datei für alle erlaubt wird. Es ist wichtig zu wissen, dass das Einrichten der Rechte natürlich nur einem Nutzer gestattet ist, der selbst die Änderungsrechte an der Datei besitzt.
Durch die Methode createNewFile() wird zunächst die relevate Datei erzeugt, falls diese nicht existieren sollte1. Durch die Methode setWritable() werden die Schreibrechte gesetzt. Sie verwendet zwei boolsche Parameter: Der erste setzt das Recht selbst. Durch die Übergabe von true werden hier also die Schreibrechte eingeräumt. Der zweite bestimmt, ob das Recht nur dem Dateibesitzer eingerichtet werden soll. Eine Übergabe von false gibt hier an, dass dies nicht der Fall sein soll, somit für alle Nutzer das Schreiben in diese Datei freigegeben wird2.
Wie oben erwähnt existiert eine überladene Methode mit nur einem Parameter. Sie setzt die Rechte nur für den Eigentümer der Datei und entspricht somit einem Aufruf von setWritable(true, true). Ein Setzen für die Eigentümergruppe ist auf diese Weise nicht möglich - ein Tribut an Javas Plattformunabhängigkeit.

import java.io.File;
import java.io.IOException;

public class DateirechteSetzen {

    public static void main(String[] args) {
        String fileName = "/Users/karlheinzwillipeter/Desktop/test.txt";
        File file = new File(fileName);
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(file.setWritable(true,false))
            System.out.println("Dateirechte auf 666 gesetzt.");
    }
}

Die folgende Liste gibt einen Überblick über die Methoden zur Änderung der Dateirechte.

1) Es muss hier beachtet werden, dass zumindest das Elternverzeichnis existiert und beschreibbar ist. Näheres hierzu siehe unter Verzeichnis erstellen.
2) Die Rechtemaske der Ausgabe ergibt sich bei einer umask von 0133. Neue Dateien werden also anfänglich mit den Rechten 644 erstellt.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.