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

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

在Java中,我动态地创建一组文件,并希望更改Linux/Unix文件系统上这些文件的文件权限。我希望能够执行chmod..这有可能是Java 5吗?如果是,怎么做?

我知道在Java 6中File对象setReadable()/setWritable()方法。我也知道我可以通过系统调用来做到这一点,但如果可能的话,我想避免这样做。


子衿沉夜
浏览 782回答 3
3回答

慕码人8056858

Java 7提供了对文件属性的完全控制,作为“新IO工具的一部分(NIO.2)。例如,可以在现有文件上设置POSIX权限setPosixFilePermissions(),或者原子化地使用以下方法创建文件createFile()或newByteChannel().您可以使用EnumSet.of(),但是助手方法PosixFilePermissions.fromString()将使用一种传统的格式,这将使许多开发人员更容易阅读。对于接受FileAttribute,您可以用PosixFilePermissions.asFileAttribute().Set<PosixFilePermission>&nbsp;ownerWritable&nbsp;=&nbsp;PosixFilePermissions.fromString("rw-r--r--"); FileAttribute<?>&nbsp;permissions&nbsp;=&nbsp;PosixFilePermissions.asFileAttribute(ownerWritable);Files.createFile(path,&nbsp;permissions);在早期版本的Java中,使用您自己的本机代码,或者exec-ING命令行实用程序是常见的方法。

青春有我

在Java 6之前,Java级别上不支持文件权限更新。您必须实现您自己的本机方法或调用。Runtime.exec()执行OS级命令,如chmod.从Java 6开始,您可以使用File.setReadable()/File.setWritable()/File.setExecutable()若要设置文件权限,请执行以下操作。但它并不模拟允许为不同用户设置权限的POSIX文件系统。setXXX()只允许为所有者和其他所有人设置权限。从Java 7开始,引入了POSIX文件权限。您可以像在*nix系统上所做的一样设置文件权限。语法是:File&nbsp;file&nbsp;=&nbsp;new&nbsp;File("file4.txt");file.createNewFile();Set<PosixFilePermission>&nbsp;perms&nbsp;=&nbsp;new&nbsp;HashSet<>(); perms.add(PosixFilePermission.OWNER_READ);perms.add(PosixFilePermission.OWNER_WRITE);Files.setPosixFilePermissions(file.toPath(),&nbsp;perms);此方法只能在POSIX文件系统上使用,这意味着您不能在Windows系统上调用它。有关文件权限管理的详细信息,建议您阅读这个职位.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java