【问题标题】:recursively set 777 permissions in java without using NIO在不使用NIO的情况下在java中递归设置777权限
【发布时间】:2014-10-30 08:34:50
【问题描述】:

有没有办法在不使用 NIO 的情况下递归地设置路径上的 777 权限(以便路径上的所有目录都获得 777 权限)。

我们可以通过如下文件类中的方法对给定文件的最后一个叶子执行此操作

import java.io.File;
import java.nio.file.FileSystems;


public class permissionTest {

    public static void main(String [] args){
        String dir = "./leaf1/leaf2/leaf3";

        File baseDir = new File(dir);

        boolean success = baseDir.mkdirs();
        if (success) {
            System.out.println("Created dirs");
            baseDir.setExecutable(true, false);
            baseDir.setReadable(true, false);
            baseDir.setWritable(true, false);
        }
        else{
            System.out.println("Not created");
        }

    }

}

上面给出了 777 给 leaf3 ,如何也给 777 给 leaf1 & leaf2 ?在一个命令中?

【问题讨论】:

  • 你不想使用多个命令设置权限的原因是什么?
  • 应该有更好的方法,比如 chmod -R:) ,对于深度嵌套的路径也不好
  • 您想将 777 分配给当前和前两个父级?通常情况相反,将 777 应用于父目录及其所有子目录
  • 如果我在上面的例子中给leaf1 777,leaf2 和leaf3 不会得到它
  • 为什么人为限制不使用NIO?

标签: java permissions 777


【解决方案1】:
Process p;
        try {
            p = Runtime.getRuntime().exec("chmod 777 -R ./leaf1");
            p.waitFor();

        } catch (Exception e) {
            e.printStackTrace();
        }

【讨论】:

  • 这也可能造成“附带损害”:它还可能对您不想更改的文件夹设置权限。
  • 是的,我正在寻找一种基于 java 的方法...不使用 chmod。我认为这种方法比较慢
  • @Bartvbi 这正是 OP 所要求的:“路径上的所有目录都获得 777 权限”。
  • @nikel 比什么慢?
猜你喜欢
  • 2014-11-22
  • 1970-01-01
  • 2022-01-16
  • 2014-12-03
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
相关资源
最近更新 更多