Как изменить права доступа к файлам из Java 1.4.2? - PullRequest
5 голосов
/ 21 января 2009

Я ищу фрагмент кода, с помощью которого я должен изменить права доступа к файлам в Unix. Мой проект работает на Java 1.4.2 ..

только пример кода или методы, которые нужно использовать.

С уважением, Senny

Ответы [ 3 ]

3 голосов
/ 21 января 2009

Ты не единственный: Как изменить права доступа к файлу и последние изменения в Java?

В принципе, вы можете использовать Runtime.exec ("chmod ..."), если существующих методов java.io.File недостаточно. Но это не было бы портативно.

1 голос
/ 21 января 2009

Вы также можете посмотреть на реализацию 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)

0 голосов
/ 10 июля 2009

Просто чтобы прояснить ситуацию: Java 1.6 представляет методы получения / установки, такие как File.canExecute () и File.setExecutable (boolean) для прав доступа к файлам. Поэтому одним из решений является использование последней версии JDK вместо версии 1.4, которую вы упомянули. В противном случае, как предлагается, вы можете попытаться сделать бэкпорт или вызвать специфичные для платформы команды.

...