所以我正在研究使用文件执行某些操作的Java应用程序,应用程序仅在使用管理员权限运行时才有效,问题是应用程序需要由不是(并且不应该)的客户端在一堆机器上使用)有管理员凭据。
try (InputStream in = url.openStream()) {
Files.copy(in, Paths.get("allDocs.zip"), StandardCopyOption.REPLACE_EXISTING);
}
在Files.copy行上抛出异常:java.nio.file.AccessDeniedException:allDocs.zip
事情是,我尝试将文件放在公共文件夹,用户主目录,AppData中的app instalation目录中,在我设置的文件夹中,每个用户都有完全控制...我总是得到java.nio.file除非我使用管理员帐户运行程序,否则.AccessDeniedException。为什么会这样?如果启动Java进程的用户有权写入Java进程无法解释的原因?提前致谢
答案 0 :(得分:1)
您的代码只是将文件写入当前目录。使用绝对路径来避免这种情况;例如:
String home = System.getProperty("user.home");
Files.copy(in, Paths.get(home, "allDocs.zip"), StandardCopyOption.REPLACE_EXISTING);