在Java中,我正在动态创建一组文件,并且想更改linux / unix文件系统上这些文件的文件许可权。我希望能够执行的Java等效项chmod。那可能是Java 5吗?如果是这样,怎么办?
linux / unix
chmod
我知道在Java 6中File对象具有setReadable()/ setWritable()方法。我也知道我可以进行系统调用来做到这一点,但是如果可能的话,我想避免这种情况。
Java 6中File
setReadable()/ setWritable()
作为“新” New IO工具(NIO.2)的一部分,Java 7中提供了对文件属性的完全控制。例如,POSIX权限可以在与现有的文件设置setPosixFilePermissions(),在文件创建与类似的方法或原子createFile()或newByteChannel()。
setPosixFilePermissions()
createFile()
newByteChannel()
你可以使用来创建一组权限EnumSet.of(),但是helper方法PosixFilePermissions.fromString()将使用一种常规格式,该格式对于许多开发人员而言更易读。对于接受的API FileAttribute,你可以使用来包装权限集PosixFilePermissions.asFileAttribute()。
EnumSet.of()
helper
PosixFilePermissions.fromString()
PosixFilePermissions.asFileAttribute()
Set<PosixFilePermission> ownerWritable = PosixFilePermissions.fromString("rw-r--r--"); FileAttribute<?> permissions = PosixFilePermissions.asFileAttribute(ownerWritable); Files.createFile(path, permissions);
在Java的早期版本中,使用自己的本机代码或exec-ing命令行实用程序是常见的方法。
exec-ing