除非管理员为每个人设置了权限,否则Java无法创建文件

时间:2016-10-10 13:16:56

标签: java windows file filesystems user-permissions

所以我正在研究使用文件执行某些操作的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进程无法解释的原因?提前致谢

1 个答案:

答案 0 :(得分:1)

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

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