我在一个名为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。
答案 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),而是放在不同的目录中,例如"数据"或类似的,所以你不要混淆源和动态生成的文件。