如何通过 Java 代码修改文件的权限?
1 个回答

Java 5-
在 Java 6 之前,Java 中没有自带可以修改文件权限的Java API的。
如果我们非要实现对文件权限的设置,我们可以编写C/C++的本地代码,以 JNI 的方式在Java代码中进行调用。或者我们也可以使用Runtime.exec()
方法调用系统的本地程序命令来解决,例如在Linux中,我们可以调用 chmod 命令。
Java 6+
从 Java 6 开始,Java 中新增了 java.io.File.canXxx() 和 java.io.File.setXxx() 系列API,用于对文件进行权限设置。
不过很遗憾的是,这些 API 只能设置文件的所有者 或 所有人对该文件的操作权限,并不能对所有者、所有组、其它进行细分的权限设置。
请注意:File.setXxx() 系列 API 只确保 所有者 或 所有人 的某个操作权限是按照你的要求来设置的,并不会先清除所有的权限设置、只保留你设置的这个权限设置。
例如在一个文件权限为"755"(即"rwxrw-rw-")执行file.setReadable(true)
,文件的权限还是"755",而不是"100"(即"r--------")。如果你想要将一个文件只设置具有"100"权限,你应该编写如下代码:
Java 7+
从 Java 7 开始,Java 在新增的java.nio.file包中又为我们带来了新的文件权限设置 API。
当然,上面的代码看起来比较长,Java 也为我们提供了一种比较快捷的设置方式:
不过,请一定要注意,这些新的API仅限于在支持 POSIX(可移植操作系统接口) 的文件系统中使用(例如 Linux),如果在 Windows 系统中执行上述代码,则会抛出java.lang.UnsupportedOperationException
异常。