Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建文件夹有效,但权限未继承_Java_Io_Windows Server 2008_Windows Server 2003_Folder Permissions - Fatal编程技术网

Java 创建文件夹有效,但权限未继承

Java 创建文件夹有效,但权限未继承,java,io,windows-server-2008,windows-server-2003,folder-permissions,Java,Io,Windows Server 2008,Windows Server 2003,Folder Permissions,我有一块Java,它可以在网络映射驱动器(Z:)上创建文件夹 脚本在服务器A(Windows 2008 R2,以用户帐户“serviceUser”运行)上执行,并在服务器B(Windows 2003)上创建文件夹 服务器B上的根文件夹(映射为Z:)具有特殊权限,允许“serviceUser”创建、修改、删除、写入等。权限设置为继承到子对象,因此在Z:中创建的文件夹应获得与Z:本身相同的权限 我的代码在Z:like中创建了两个文件夹: File destination = new File("z:

我有一块Java,它可以在网络映射驱动器(Z:)上创建文件夹 脚本在服务器A(Windows 2008 R2,以用户帐户“serviceUser”运行)上执行,并在服务器B(Windows 2003)上创建文件夹

服务器B上的根文件夹(映射为Z:)具有特殊权限,允许“serviceUser”创建、修改、删除、写入等。权限设置为继承到子对象,因此在Z:中创建的文件夹应获得与Z:本身相同的权限

我的代码在Z:like中创建了两个文件夹:

File destination = new File("z:\\folder_1\\");
File destination = new File("z:\\folder_1\\subfolder_1\\");
文件夹“Folder_1”获得正确的权限,但“subfolder_1”没有。 创建这些文件夹后,我需要创建一个文件,但由于“子文件夹_1”没有获得权限,控制台在执行
文件名=新文件时报告
“访问被拒绝”
(“z:\\folder_1\\subfolder_1\\fileName.png”)


如何解决此问题?

您是否尝试过mkdirs命令?它将委托操作系统在整个路径中创建所有需要的目录

File destination = new File("z:\\folder_1\\subfolder_1");
destination.mkdirs();

尝试在folder2上使用:setReadable()和/或setWritable()。这是控制文件权限的唯一可移植纯java方法。

我发现的唯一成功方法是将用户帐户设置为具有完全控制权的服务器B管理员。

如果先检查目录是否存在,不是更好吗<代码>如果(!destination.exists())destination.mkdir()我不认为OP会出现这种情况,但进行预检查绝对没有错。mkdirs调用会忽略给定路径中的任何预先存在的目录。@谢谢,我使用它确实避免了对每个文件夹调用方法,但不幸的是,它不能解决权限问题。@user706058-在创建文件夹_1后检查其属性。它的继承权限是否完好无损?@Perception-是的,权限被继承到
文件夹_1
,但不是继承到
子文件夹_1
,我刚刚尝试过,执行此操作时,访问被拒绝的相同问题消息:
文件目标=新文件(FolderPath);destination.setReadable(真、假);destination.setWritable(真、假)