【发布时间】:2018-09-10 04:08:54
【问题描述】:
我是 Java 新手。 umask在api中暴露在哪里?
【问题讨论】:
标签: java file-permissions
我是 Java 新手。 umask在api中暴露在哪里?
【问题讨论】:
标签: java file-permissions
您不能直接使用 umask,因为 Java 是一种抽象,而 umask 是特定于 POSIX 实现的。但是您有以下 API:
File f;
f.setExecutable(true);
f.setReadable(false);
f.setWritable(true);
还有更多可用的 API,check the docs。
如果您必须直接访问 umask,要么通过 JNI 和 chmod() 系统调用来实现,要么使用 exec("chmod") 生成一个新进程。
【讨论】:
java.nio.file 中。
java.nio.file.attribute.
java.nio.file.attribute.PosixFileAttributes 在 Java SE 7 中。
【讨论】:
另一种方法是使用公开 POSIX 系统调用的第 3 方 Java 库;例如
这种方法的问题在于它本质上是不可移植的(不能在不符合 POSIX 的平台上工作),并且需要特定于平台的本机库......以及所有这些。
【讨论】:
import java.nio.file.Files
import java.nio.file.attribute.PosixFilePermission
File file = new File("/some/path")
Files.setPosixFilePermissions(file.toPath(), [
PosixFilePermission.OWNER_READ,
PosixFilePermission.OWNER_WRITE
].toSet())
【讨论】: