Java ist auch eine Insel

Freitag, Februar 17, 2006

Insel: Dateiattribute verändern

Zu den Anfragemehtoden canXXX() kann ein File-Objekt auch Dateiattribute
verändern, wobei viele Methoden seit Java 6 neu sind.


class java.io.File

implements Serializable, Comparable<File>

boolean setReadOnly()

Setzt die Datei auf nur-lesend. Liefert »wahr«, wenn die Änderung möglich war.

boolean setExecutable( boolean executable, boolean ownerOnly )

boolean setReadable( boolean readable, boolean ownerOnly )

boolean setWritable( boolean writable, boolean ownerOnly )

Setzt das Recht zum Ausführen/Lesen/Schreiben der Datei. Ist ownerOnly true,
gilt das Recht nur für den Benutzer, sonst für alle.

boolean setExecutable( boolean executable )

boolean setReadable( boolean readable )

boolean setWritable( boolean writable )

Aufruf von setXXX() mit zweiten Argument true.


Beispiel Lege eine neue temporäre Date an und teste das Lesen und Verändern
des Lese-Schreib-Attributs. Nach dem Test lösche die Datei wieder.


File f = File.createTempFile( "bla", "blub" );

System.out.printf( "readable=%s, writable=%s%n", f.canRead(), f.canWrite() );

f.setReadOnly();

System.out.printf( "readable=%s, writable=%s%n", f.canRead(), f.canWrite() );

f.setWritable( true );

System.out.printf( "readable=%s, writable=%s%n", f.canRead(), f.canWrite() );

f.deleteOnExit();


Die Ausgabe ist:


readable=true, writable=true

readable=true, writable=false

readable=true, writable=true


setLastModified() und die setXXX() sind die einzigen Funktionen, die auf dem
Datei-Objekt wirklich eine Änderung ausführen. Insofern muss die Aussage von Sun
in der API-Dokumentation genau genommen werden: “Instances of the File class are
immutable; that is, once created, the abstract pathname represented by a File
object will never change“. Nur der Dateiname ist immutable, aber nicht die
Zustände.

AddThis Social Bookmark Button