Abh*_*hek 14 java file-permissions file umask
可能重复:
如何在java中设置umask?
在java中创建文件对象时,如何将文件权限设置为777(或任何其他任意权限)?
rat*_*eak 23
有3种方法可供选择:
setReadalble(boolean boolean)
setWritable(boolean,boolean)
setExecutable(boolean,boolean)
这会将文件设置为"0777"
String path = "SOME/PATH";
final File file = new File(path);
file.setReadable(true, false);
file.setExecutable(true, false);
file.setWritable(true, false);
Run Code Online (Sandbox Code Playgroud)
Tom*_*ine 18
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<PosixFilePermission> 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));
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以使用它,如:
$ rm -f /tmp/test-file.txt && javac Test.java && java Test
Permissions before: rw-r--r--
Permissions after: rwxrwxrwx
Run Code Online (Sandbox Code Playgroud)
sar*_*old 16
如果在启动JVM之前设置为umask(2)
to 0
,则将创建所有创建的文件和目录,并为每个人创建完全权限.这可能是一个坏主意.
创建文件后File.setReadable()
,您可以使用File.setWritable
API来处理模式位.如果您授予权限,那通常就足够了; 如果您尝试从其他用户删除权限,那么您的权限应该从一开始就设置得非常严格.(umask(0777)
在启动JVM之前,然后将权限准确地添加到您想要的位置.)
归档时间: |
|
查看次数: |
70361 次 |
最近记录: |