我有一个maven项目,需要在file.json中编写应该位于
的JSON对象的src /主/资源/
但在我需要检查文件是否存在之前。如果不是创造它。
public static void writeMenuJSon(String jsonParamIn) {
JsonParser parser = new JsonParser();
JsonObject modulJson = parser.parse(jsonParamIn).getAsJsonObject();
//TODO check if file exists and create file if not
code here ...
// write to file JSON object
try (Writer writer = new FileWriter("path to file")){
Gson gson = new GsonBuilder().create();
gson.toJson(modulJson, writer);
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
如果要在src/main/resources
中创建动态文件,那就完全错了。这只会在您的开发环境中起作用。使用Jar或War部署代码时,文件系统上不会有此目录。它将包含在Jar / War或其他包装中。
如果你理解上面但仍然想要这样做。与当前工作目录相关以创建文件,通常从IDE启动Main时的工作目录设置为项目的根目录,因此在
创建文件 src/main/resources/foo.txt
会做到的。或者,您可以从IDE启动器或运行时使用
计算出当前的工作目录System.getProperty("user.dir");
答案 1 :(得分:1)
您正在尝试将JSON文件写入上述目录?
我可能会错过你问题中的重要内容,但是:
可以创建执行此操作的代码,但我不确定您将如何运行此代码,这是否是您的问题的理智解决方案?
当mvn打包具有此“src / main / resources /”资源的项目名称P时,将会添加到包装P.war / .jar中,但在运行之前不会有任何JSON文件存在代码 - 你所追求的代码 - 生成它,如果没有一些 - 可能是丑陋的额外工作就不能完成。
如果此项目中包含此代码,则只有在运行项目包时才会运行该代码。并且不会有这个“src / main / resources /”在哪里写它。