在WIN7中使用Java在分包中的文件中写入JSON

Write JSON in a file in subpackage using Java in WIN7

我在一个名为 com.project.test 的包中有一个 Java class,我想在一个名为 Output.json 的文件中写一些 JSON位于名为 com.project.test.sources.

的子包中

这是我试过的代码:

        String gsonGraphe = gson.toJson(graphe); /* This is the JSON code to write */
        File file = new File("sources/Output.json");
        if (!file.exists()) {
            file.createNewFile();
        }
        FileWriter writer = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bufferedWriter = new BufferedWriter(writer);
        bufferedWriter.write(gsonGraphe);
        bufferedWriter.close();

它给了我这个错误信息:

Exception in thread "main" java.io.IOException: Specified access path not found
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)
    at com.neo4j.test.auteurPays.AuteurPays.main(AuteurPays.java:145)

当我尝试时它给了我同样的错误:File file = new File("/sources/Output.json");File file = new File("sources\Output.json");File file = new File("\sources\Output.json");

我做错了什么?我该如何解决?

谢谢!

PS : 我在 Windows 7.

下使用 Eclipse Luna

所有相对路径(不以 windows 上的驱动器号或 linux 上的斜线开头的路径)都是相对于当前工作目录的,应用程序将从该目录执行.通常(但这在很大程度上取决于环境,IDE 等),这是包含名为 "src"、"src/main/java" 或类似名称的目录的项目目录,它又是所有目录的根目录您的来源(例如 *.java 文件)。

如果您有一个名为 "com.project.test.sources" 的包,则在此根目录下必须有目录 "com/project/test/sources"。因此,如果您希望文件位于该包中,则必须使用类似的路径 src/com/project/test/sources(取决于您的源根目录)。

但是,您可能不想将应用程序生成的文件放在应用程序本身的代码库中(因此不要放在 "src"-dir 之下),而是放在 "data" 等不同的目录中或类似的,所以你不要混淆源和动态生成的文件。