有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaHadoop文件系统。mkdirs(路径,权限)忽略该权限

我试图以编程方式在hdfs中创建目录。我需要为所有用户编写目录。所以我试着像这样把经验传递给MKDIR:

Path dir = new Path("/tmp/mkdir-test");    
fileSystem.mkdirs(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));

但是,结果是我获得了具有drwxr-xr-x权限的目录。这似乎不是什么总体权限问题,因为如果我在下一行明确设置它们:

// For some reason the initial permissions are ignored
fileSystem.setPermission(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));

目录按预期正确地以drwxrwxrwx结尾

为什么传递给mkdirs的权限不受尊重


共 (1) 个答案

  1. # 1 楼答案

    尽管实际方法的javadoc没有提及任何内容,但静态方法FileSystem.mkdirs(FileSystem, Path, FsPermission)提供了一些解释:

    Create a directory with the provided permission. The permission of the directory is set to be the provided permission as in setPermission, not permission&~umask.

    结果证明,标准mkdirs使用umask获得了给定的权限

    静态实用程序方法被实现为mkdirssetPermission的组合