Вы также можете посмотреть на реализацию Gnu ClassPath java.lang.File
Они реализовали функцию на основе вызовов JNI:
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 объявляет вызов:
/**
* 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 действительно реализует желаемую функцию ...
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);
Так что ... если вы действительно этого хотите, можно реализовать это, посмотрев на источник cpio.c : он вызывает chmod
из libc standard библиотека ( LibGW32C переносит некоторые из этих функций на Windows)