2016-10-10 21 views
1

因此,我正在研究对文件执行一些操作的Java应用程序,应用程序仅在以管理员权限运行时才起作用,问题在于应用程序需要在群集上使用(不应该)拥有管理员凭据的客户端的机器。Java无法创建文件,除非管理员即使为每个人设置了权限

try (InputStream in = url.openStream()) { 

      Files.copy(in, Paths.get("allDocs.zip"), StandardCopyOption.REPLACE_EXISTING); 

     } 

异常被扔在Files.copy行:java.nio.file.AccessDeniedException:allDocs.zip

的事情是,我试图把文件在公用文件夹,在用户家目录中,应用程序数据,在应用程序安装目录中,我为其设置每个用户都完全控制的文件夹...我总是得到java.nio.file.AccessDeniedException,除非我用管理员帐户运行程序。这是为什么发生?如果启动Java进程的用户有权写入为什么Java进程不能?在此先感谢

+1

你确定你在Public,user.home,AppData等文件中写入文件吗?您的代码只是将文件放在当前目录中。 – VGR

+0

@VGR是的我很确定,因为如果我将它作为管理文件在这些地方创建的话 – user1902247

+0

您是否检查过文件的权限? –

回答

1

您的代码只是将文件写入当前目录。使用绝对路径来避免这种情况;例如:

String home = System.getProperty("user.home"); 
Files.copy(in, Paths.get(home, "allDocs.zip"), StandardCopyOption.REPLACE_EXISTING); 
相关问题