我正在尝试使用公共写权限创建目录.为了简化我希望它拥有777权限的东西.这是我的代码:
private static FileAttribute<Set<PosixFilePermission>> DIR_PERMISSIONS;
static {
Set<PosixFilePermission> perms = new HashSet<>();
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);
DIR_PERMISSIONS = PosixFilePermissions.asFileAttribute(perms);
}
private Path ensurePath(LocalDate localDate) throws IOException {
String year = String.valueOf(localDate.getYear());
String month = String.format("%02d", localDate.getMonthValue());
Path path = Paths.get(rootDirectory, year, month);
return Files.createDirectories(path, DIR_PERMISSIONS);
}
Run Code Online (Sandbox Code Playgroud)
有了rootDirectory=/tmp/data这应该创建文件夹一样/tmp/data/2016/01,各有777权限.相反,文件夹具有775权限(drwxrwxr-x.),因此它们缺少公共写入.为什么这样工作?也许JVM需要特殊的参数才能设置这样的权限?我的系统是Fedora 24,app是标准的Spring Boot应用程序,由maven插件启动.
我希望我的函数返回整个url,从具有给定id的节点开始,并为父项进行serching,最后一个具有parent_id = 1.我的功能几乎可以工作,回显"$ wholeUrl"; 我有我的网址,但功能不会重新调整它,我不知道wtf,请帮忙.
这是我的代码:
function getUrl($ xml,$ id){
$wholeUrl="";
$wholeUrl= getMyUrl($xml,$id,$wholeUrl);
return $wholeUrl;
Run Code Online (Sandbox Code Playgroud)
}
function getMyUrl($ xml,$ idWew,$ wholeUrl){
foreach($xml as $node) {
$par = $node->parent_id;
$ide = $node->id;
$url = $node->url;
$name = $node->name;
settype($par,'integer');
settype($ide,'integer');
if($ide==$idWew){
$wholeUrl=$url."/".$wholeUrl;
if($par==1){
echo"$wholeUrl ";
return $wholeUrl;
break;
}else{
getMyUrl($xml,$par,$wholeUrl);
}
}
}
}
print_r(getUrl($xmlcat,1877));
Run Code Online (Sandbox Code Playgroud)
$ xmlcat是具有以下结构的平面数组:
SimpleXMLElement Object ( [id] => 1876 [parent_id] => 1 [name] => blablabla, bla, bla [url] => bla-bla-bla-bla )
Run Code Online (Sandbox Code Playgroud)