Java 无法创建文件,除非管理员即使为所有人设置了权限

Java can't create file unless admin even with permissions set for everyone

所以我正在开发 Java 应用程序,该应用程序对文件进行一些操作,应用程序仅在 运行 具有管理员权限时才有效,问题是该应用程序需要由客户端在一堆机器上使用没有(也不应该)有管理员凭据。

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

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

        }

在 Files.copy 行抛出异常:java.nio.file.AccessDeniedException:allDocs.zip

事情是,我尝试将文件放在 Public 文件夹中,在用户主目录中,在 AppData 中,在应用程序安装目录中,在我设置为每个用户都具有完全控制权的文件夹中......我总是得到 java.nio.file.AccessDeniedException 除非我 运行 使用管理员帐户编程。为什么会这样?如果启动 Java 进程的用户有权写入,为什么 Java 进程不能?提前致谢

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

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