如何从Java 1.4.2更改文件权限?

时间:2009-01-21 08:02:03

标签: file permissions

我正在寻找一个代码片段,我必须使用它来更改unix上的文件权限。我的项目运行在java 1.4.2 ..

只需要使用示例代码示例或方法即可。

此致 Senny

3 个答案:

答案 0 :(得分:3)

你不是唯一一个: How to change the file's permission and last modified in Java?

如果现有的java.io.File方法不够,原则上可以使用Runtime.exec(“chmod ...”)。但它不便携。

答案 1 :(得分:1)

您还可以查看java.lang.File

的Gnu ClassPath实现

他们基于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);

所以......如果你真的想要它,可以通过查看source of cpio.c来实现它:它从 libc 标准库调用chmod({ {3}}确实将其中一些功能移植到Windows)

答案 2 :(得分:0)

为了更清楚:Java 1.6为文件权限引入了像File.canExecute()和File.setExecutable(boolean)这样的getter / setter。因此,一种解决方案是使用最新的JDK而不是您提到的1.4。否则,按照建议,您可以尝试向后移植或调用特定于平台的命令。