我遇到了一个奇怪的问题。
我有这条路径,我想用于我的应用程序:
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);
答案 0 :(得分:0)
好的,我设法找到了更好的方法。我实际上是使用以下命令从配置加载user.dir:
ConfigFactory.load().getString("user.dir")+"/cache/";
这适用于应用程序生命周期的每个阶段。 Play.application()。getPath()如果在一个急切的绑定单例上调用,表示该应用程序未启动,则会抛出错误。