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 楼答案
尽管实际方法的javadoc没有提及任何内容,但静态方法
FileSystem.mkdirs(FileSystem, Path, FsPermission)
提供了一些解释:结果证明,标准
mkdirs
使用umask获得了给定的权限静态实用程序方法被实现为
mkdirs
和setPermission
的组合