应用程序 运行 时无法创建文件

Can't create file while the application running

我有一个奇怪的问题。

我有这条路径要用于我的应用程序:

private final String PNG_PATH = "cache/plugins/sonarrtv/images/";

如果文件夹不存在,我会创建它。这没有问题,但是一旦我想在这个文件夹中创建文件,它就会失败,但只有当我 运行 在部署的应用程序上使用 'stage' 命令时才会失败。如果我 运行 它 ./activator 运行 然后它工作

[info] - application - FULL_PNG Path: /Users/gz/Cloud/Dev/Java/HomeDash/target/universal/stage/cache/plugins/sonarrtv/images Writable ? false
[info] - application - f Path: /Users/gz/Cloud/Dev/Java/HomeDash/target/universal/stage/cache/plugins/sonarrtv/images/247808-fanart.jpg

它说该文件夹不可写。我试图以编程方式将其设置为可写,但没有区别。我检查了一下,我是创建的新文件夹的所有者,所以这应该不是问题。

这是我用来创建文件夹的代码:

File f = new File(PNG_PATH);
if (!f.exists()) {
    f.mkdirs();
}
f.setWritable(true);
f.deleteOnExit();

这里是我创建文件的方式:

File f = new File(PNG_PATH + series.getSeriesId() + "-fanart.jpg");
FileUtils.copyURLToFile(new java.net.URL(poster), f);

好的,我设法找到了更好的方法。我实际上是使用以下命令从配置中加载 user.dir:

ConfigFactory.load().getString("user.dir")+"/cache/";

这适用于应用程序生命周期的每个阶段。 Play.application().getPath() 如果调用急切绑定单例会抛出错误,表示应用程序未启动。