一尘不染

Java如何以编程方式更改文件权限?

java

在Java中,我正在动态创建一组文件,并且想更改linux / unix文件系统上这些文件的文件许可权。我希望能够执行的Java等效项chmod。那可能是Java 5吗?如果是这样,怎么办?

我知道在Java 6中File对象具有setReadable()/ setWritable()方法。我也知道我可以进行系统调用来做到这一点,但是如果可能的话,我想避免这种情况。


阅读 326

收藏
2020-02-28

共1个答案

一尘不染

作为“新” New IO工具(NIO.2)的一部分,Java 7中提供了对文件属性的完全控制。例如,POSIX权限可以在与现有的文件设置setPosixFilePermissions(),在文件创建与类似的方法或原子createFile()newByteChannel()

你可以使用来创建一组权限EnumSet.of(),但是helper方法PosixFilePermissions.fromString()将使用一种常规格式,该格式对于许多开发人员而言更易读。对于接受的API FileAttribute,你可以使用来包装权限集PosixFilePermissions.asFileAttribute()

Set<PosixFilePermission> ownerWritable = PosixFilePermissions.fromString("rw-r--r--");
FileAttribute<?> permissions = PosixFilePermissions.asFileAttribute(ownerWritable);
Files.createFile(path, permissions);

在Java的早期版本中,使用自己的本机代码或exec-ing命令行实用程序是常见的方法。

2020-02-28