Schreibschutz entfernen

Crai

Mitglied
Hallo,

ich hoffe ihr könnt mir helfen...
Mein Problem lässt sich einfach beschreiben:
Ich will in eine Datei schreiben, die schreibgeschützt ist.

Ich hab mich schon überall umgesehen und bis jetzt keine Lösung gefunden.
Ist das denn so schwer mit Java?
Beim Suchen bin ich auch auf die Klasse java.io.FilePermission gestoßen. Nur diese bringt mich da auch nicht weiter....

Welche Klassen erlauben das Setzen von Dateiattributen?

Vielen Dank für jede Hilfe!

Cu
Craimore
 
Hallo!

Da das aktuell mit der Standard API nicht möglich ist, musst du auf Betriebsystemspezifische Funktionalität zurück greifen:

Code:
   /**
    * 
    */
   package de.tutorials;
   
   import java.io.File;
   
   /**
    * @author Tom
    * 
    */
   public class ManipulateWin32FileAttributesExample {
   
   	/**
   	 * @param args
   	 */
   	public static void main(String[] args) {
   		File file = new File("c:/abc.txt");
   
   		System.out.println("canWrite : " + file.canWrite());
   
   		System.out.println("makeFileWritable: " + makeFileWritable(file));
   
   		System.out.println("canWrite : " + file.canWrite());

                //Man kann auch den freien Speicherplatz anzeigen lassen:
                
   	}
   
   	private static boolean makeFileWritable(File file) {
   		try {
   		    Process process = new ProcessBuilder(new String[] { "cmd", "/c",
 				 "attrib", "-R", file.getAbsolutePath() }).start();
   			process.waitFor();
   		} catch (Exception e) {
   			e.printStackTrace();
   			return false;
   		}
   		return true;
   	}
   }

Außerdem wird mit Java 6 alles besser ;-)
Code:
/**
  * 
  */
 package de.tutorials.mustang;
 
 import java.io.File;
 
 /**
  * @author Tom
  * 
  */
 public class MustanAPIExample {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        File file = new File("c:/abc.txt");
        file.setExecutable(true);
        file.setExecutable(true,true);//true, true <- by owner only
        file.setWritable(true);
        file.setReadOnly();
        file.setWritable(true,true);//true, true <- by owner only
        
        //Show FreeDiskSpace
        System.out.println(new File("c:").getFreeSpace());
    }
 }

Gruß Tom
 
Hallo Tom,

vielen Dank für deine Hilfe! Hat mir sehr geholfen! :)
Ich glaub da freu ich mich schon auf Mustang. Gibt es denn schon Andeutungen,
wann es in etwa rauskommen soll?

Bis dahin werde ich mir wohl mit dem Workaround helfen müssen...

Viele Grüße,
CU
Crai
 

Neue Beiträge

Zurück