在WIN7中使用Java在子包中的文件中编写JSON

时间:2015-02-26 08:22:54

标签: java json filewriter

我在一个名为com.project.test的包中有一个Java类,我想在名为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。

1 个答案:

答案 0 :(得分:1)

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

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

但是,您可能不希望将应用程序生成的文件放在应用程序本身的代码库中(因此不要低于" src" -dir),而是放在不同的目录中,例如"数据"或类似的,所以你不要混淆源和动态生成的文件。