java在创建文件对象时将文件权限设置为777

可能重复:
如何在java中设置umask?

在java中创建文件对象时,如何将文件权限设置为777(或任何其他任意权限)?

如果在启动JVM之前将umask(2)0 ,则将创建所有创建的文件和目录,并为每个人创建完全权限。 这可能是一个坏主意。

您可以使用File.setReadable()File.setWritable API在创建文件后摆弄模式位。 如果您授予权限,那通常就足够了; 如果您尝试从其他用户删除权限,那么您的权限应该从一开始就设置得非常严格。 ( umask(0777)在启动JVM之前,然后将权限准确地添加到您想要的位置。)

有3种方法可供选择:

setReadalble(boolean boolean)
setWritable(布尔值,布尔值)
setExecutable(布尔值,布尔值)

这会将文件设置为“0777”

 String path = "SOME/PATH"; final File file = new File(path); file.setReadable(true, false); file.setExecutable(true, false); file.setWritable(true, false); 

Java SE 7具有java.nio.file.attribute.PosixFileAttributes ,它为您提供对所有者,组和其他人的读取,写入和执行权限的精细控制。

 import java.nio.file.*; import java.nio.file.attribute.*; import java.util.Set; public class Test { public static void main(String[] args) throws Exception { Path path = Paths.get("/tmp/test-file.txt"); if (!Files.exists(path)) Files.createFile(path); Set perms = Files.readAttributes(path,PosixFileAttributes.class).permissions(); System.out.format("Permissions before: %s%n", PosixFilePermissions.toString(perms)); perms.add(PosixFilePermission.OWNER_WRITE); perms.add(PosixFilePermission.OWNER_READ); perms.add(PosixFilePermission.OWNER_EXECUTE); perms.add(PosixFilePermission.GROUP_WRITE); perms.add(PosixFilePermission.GROUP_READ); perms.add(PosixFilePermission.GROUP_EXECUTE); perms.add(PosixFilePermission.OTHERS_WRITE); perms.add(PosixFilePermission.OTHERS_READ); perms.add(PosixFilePermission.OTHERS_EXECUTE); Files.setPosixFilePermissions(path, perms); System.out.format("Permissions after: %s%n", PosixFilePermissions.toString(perms)); } } 

然后可以使用它,如:

 $ rm -f /tmp/test-file.txt && javac Test.java && java Test Permissions before: rw-r--r-- Permissions after: rwxrwxrwx