如何在资源目录中的java中创建文件

时间:2017-10-05 16:34:48

标签: java maven

我有一个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();
    }

}

2 个答案:

答案 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 /”在哪里写它。