java.security.AccessControlException: Access deny (java.io.FilePermission)

final File parentDir = new File("S:\\PDSPopulatingProgram");
parentDir.mkdir();
final String hash = "popupateData";
final String fileName = hash + ".txt";
final File file = new File(parentDir, fileName);
file.createNewFile(); // Creates file PDSPopulatingProgram/popupateData.txt

我正在尝试在文件夹中创建文件,但我遇到异常

java.security.AccessControlException: Access denied

我在窗户环境中工作。我可以从 Windows 资源管理器创建一个文件夹,但不能从 Java 代码创建一个文件夹。

如何解决此问题?


答案 1

在尝试添加:<jre location>\lib\security\java.policy

grant { permission java.security.AllPermission; };

看看它是否允许你。如果是这样,您将必须添加更精细的权限。

看:

Java 8 java.policy 文件的文档

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html


答案 2

虽然不建议这样做,但是如果您真的想让Web应用程序访问其部署目录之外的文件夹。您需要在文件中添加以下权限(路径与Petey B的回复中所示)java.policy

permission java.io.FilePermission "your folder path", "write"

在你的情况下,它将是

permission java.io.FilePermission "S:/PDSPopulatingProgram/-", "write"

此处表示此文件夹内的任何文件或子文件夹。/-

警告:但是,通过这样做,您将面临一些安全风险。