Kan man på något sätt ändra filrättigheterna i ett filsystem m.h.a. Java?
Man kan ju skapa, radera och ändra filer, så rimligtvis borde man jui även kunna sätta rättigheterna också? Eller? :q
4 svar · 267 visningar · startad av andreascarlsson
Kan man på något sätt ändra filrättigheterna i ett filsystem m.h.a. Java?
Man kan ju skapa, radera och ändra filer, så rimligtvis borde man jui även kunna sätta rättigheterna också? Eller? :q
På vilket system????
Där har du svaret och problemet. Java är plattformsoberoende. Att sätta rättigheterna för filer är inte helt trivialt. Olika operativsystem har olika sätt att definiera behörigheter och har olika behörighetsmodeller.
Ja och detta borde väl vara ett jobb för JVM:en?? Eller?
Jag tycker att det borde finnas en metod (i lämplig klass) som heter setPermission(String user, String permission) där permission kan vara read, read/write, read/write/execute, osv...
Sedan är det väl upp till JVM:en att översätta detta till det aktuella systemets behörighetsmodell.
OBS! förmodligen är det nog inte så trivialt i verkligeten, men jag blir lite irriterad när saker och ting inte fungerar som jag tycker att de borde :)
SHIT SHIT!!! Får hitta någon annan lösning då... *lååång suck*
Tack ändå!
Surfade runt lite och hittade detta (dock en FUL lösning ):
You may use exec() to perform nearly any OS command you wish.
Here's a sample bit of code:
static public void chmod777(File file) {
if (file == null || !file.exists())
return;
try {
String command = "chmod 777 " + file.getAbsolutePath();
Runtime r = Runtime.getRuntime();
Process p = r.exec(command);
// p.waitfor();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
The problem with exec() is platform dependency.
A quick and dirty check to see if you're on unix might be to look at the
file.pathSeparatorChar();
and see if it is equal to "/" ... obviously, this isn't perfect.
This example is static so, it could be used from a "helper class" .... You might wish to return sucess or failure state, or perhaps set the permissions from a parameter.
Sedan kan du ju alltid kika och söka på java.security.Securityoch ACL.
En sökning gav:
http://java.sun.com/j2se/1.3/docs/guide/security/permissions.html
http://tns-www.lcs.mit.edu/manuals/java-api-1.1beta2/api/java.security.acl.Acl.html#addEntry(java.security.Principal,%20java.security.acl.AclEntry)
Tackar!!
Det var en jäkligt ful lösning, men den verkar fungera! :)
Jag misstänker dock att systemet aldrig kommer att köras på någon windowsburk, eller dylikt, så denna lösning borde fungera bra!!
Tack så mycket!!!