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

Posted

技术标签:

【中文标题】java在创建文件对象时将文件权限设置为777 [重复]【英文标题】:java set file permissions to 777 while creating a file object [duplicate] 【发布时间】:2011-09-08 04:17:47 【问题描述】:

可能重复:How can I set the umask from within java?

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

【问题讨论】:

在 JDK7 中,您可以使用 Files.setPosixFilePermissions 将文件权限更改为您想要的任何内容。如果您需要在创建文件时自动设置权限,那么您也可以这样做。 【参考方案1】:

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));
    

然后可以像这样使用:

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

【讨论】:

请注意,这在 Windows 中不起作用link【参考方案2】:

有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);

【讨论】:

它对我不起作用..你能帮忙吗? 是的,这不适用于 RH Linux 上的文件 如果这种方式不适合你,你可以试试 Stephen Ostermiller 给出的解决方案***.com/a/6233604/5361779【参考方案3】:

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

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

【讨论】:

以上是关于java在创建文件对象时将文件权限设置为777 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

寻找想法以确保在 git 存储库中将文件权限设置为 chmod 777

如何在 amazon linux 中自动创建自动 777 到文件夹/文件

Linux之创建777权限的文件

linux下文件权限设置中的数字表示权限,比如777,677等,这个根据啥得来的

linux环境下使用chmod -r 777 修改文件夹下的文件及文件夹权限

挂载共享 cif 的权限始终为 777