Ich denke, es ist eigentlich unmöglich ist richtig, die Berechtigungen zu halten.
Berechtigungen sind sehr betriebssystemspezifisch: Während POSIX-Dateiberechtigungen dem Benutzer erlauben zu bestimmen, ob Sie eine Datei für den Dateibesitzer, die Gruppe und andere lesen, schreiben oder ausführen können, hat das NTFS-Dateisystem ein ähnliches System, aber das Konzept für eine Ausführungsberechtigung ist nicht vorhanden. Und das frühe FAT/FAT32 Dateisystem, hat überhaupt keine Dateiberechtigungen (ein Teil vom schreibgeschützten Attribut).
Als Cross-Plattform, wäre es schwierig, für Java die Erlaubnis richtig auf den neu erstellten (entpackten) Dateien auf dem zugrunde liegenden Betriebssystem abhängig zu setzen ....
Das heißt, hat Java 6 eine neue Java .io.File-Klasse, mit der Sie Berechtigungen setzen können (mit Methoden wie setExecutable(), setReadable(), etc ... siehe http://java.sun.com/javase/6/docs/api/java/io/File.html)
Diese haben mir sehr geholfen, besonders die setExecutable(), die meine Hauptsorge war wenn ausführbare Dateien auf einem Linux-Dateisystem entpackt werden müssen. Und Sie müssen sich nicht darum kümmern, herauszufinden, auf welchem Betriebssystem Sie laufen, da die Methode einfach nichts macht, wenn Sie unter Windows oder anderen Systemen ohne das Konzept ausführbarer Dateien laufen.
Ich weiß, das ist ein ziemlich alter Beitrag, aber haben Sie dieses Problem gelöst? Ich habe gerade das gleiche Problem; Es scheint nur eine ausführbare Datei so weit zu beeinflussen ... wenn ich es "von Hand" entzippe, ist die Berechtigung korrekt – dm76
Ich habe es tatsächlich nicht gelöst. Mein letzter Annäherungsvektor würde sein, Apache's Ameisen-Aufgabe auseinander zu ziehen, um Zip-Dateien zu manipulieren und zu bestimmen, was sie tun. –
Ant kann das nur seit 1.8 tun, mit der neuen Funktion von Java.io.File in Java 6 (siehe meine Antwort unten) – dm76