2009-01-21 23 views
5

Estoy buscando un fragmento de código, con el cual debo cambiar los permisos de archivos en Unix. Mi proyecto se ejecuta en Java 1.4.2 ..¿Cómo cambiar los permisos de archivos de Java 1.4.2?

sólo un ejemplo de código muestra o métodos que necesita ser utilizado va a hacer ..

Saludos, Senny

+0

Posible duplicado de [¿Cómo cambiar el permiso del archivo y la última modificación en Java?] (Http://stackoverflow.com/questions/459622/how-to-change-the-files-permission-and-last-modified -in-java) –

Respuesta

3

Usted no es el único: How to change the file's permission and last modified in Java?

En principio, podría utilizar Runtime.exec ("chmod ...") si los métodos existentes de java.io.File no son suficientes. Pero no sería portátil.

+0

Gracias por esto. Mi método no portátil era para Windows, que se ve así: 'Runtime.exec (" attrib -r ' –

1

También podría mirar a la implementación GNU ClassPath de java.lang.File

Se implementan la función basado en JNI llamadas:

native/jni/java-io/java_io_VMFile.c: 
    set_file_permissions: new helper function. 
    Java_java_io_VMFile_setReadable: new native method to bakcup 1.6 methods 
    in VMFile.java. 

VMFile.java declara la llamada:

/** 
    * Set the write permission of the file. 
    */ 
    public static synchronized native boolean setWritable(String path, 
                 boolean writable, 
                 boolean ownerOnly); 

native/jni/java-io/java_io_VMFile.c no aplicar la función deseada ...

JNIEXPORT jboolean JNICALL 
Java_java_io_VMFile_setWritable (JNIEnv *env, 
           jclass clazz __attribute__ ((__unused__)), 
           jstring name, 
           jboolean writable, 
           jboolean ownerOnly) 
{ 
    return set_file_permissions (env, name, writable, ownerOnly, 
           CPFILE_FLAG_WRITE); 
} 

[...] 
result = cpio_chmod (filename, permissions); 

Así que ... si realmente lo desea, es posible ponerlo en práctica, mirando el source of cpio.c: llama chmod de libc biblioteca estándar (LibGW32C hace puerto algunas de esas funciones hasta Windows)

0

Para que quede más claro: Java 1.6 presenta getters/setters como File.canExecute() y File.setExecutable (boolean) para permisos de archivos. Entonces, una solución es usar el último JDK en lugar del 1.4 que mencionaste. De lo contrario, como se sugiere, puede intentar hacer una copia de seguridad o llamar a comandos específicos de la plataforma.

Cuestiones relacionadas