Java Jackson writeValue()到文件不使用相对路径
我正试图将一个对象写入jackson的json文件 如果我提供了一个绝对路径Java Jackson writeValue()到文件不使用相对路径,java,json,file,io,jackson,Java,Json,File,Io,Jackson,我正试图将一个对象写入jackson的json文件 如果我提供了一个绝对路径“D:/Projects/quick-red/src/main/resources/com/models/Quizzes.json”它正在工作,文件显示在目录中 但如果我提供一个相对路径-“/com/models/Quizzes.json”,我只是在控制台中用退出代码0完成了过程,什么也没有发生。我做错了什么 这是我的代码: public static void writeEntityToJson(Object json
“D:/Projects/quick-red/src/main/resources/com/models/Quizzes.json”
它正在工作,文件显示在目录中
但如果我提供一个相对路径-“/com/models/Quizzes.json”
,我只是在控制台中用退出代码0完成了过程,什么也没有发生。我做错了什么
这是我的代码:
public static void writeEntityToJson(Object jsonDataObject, String path) throws IOException {
ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());
writer.writeValue(new File(path), jsonDataObject);
}
public static void main(String[] args) throws IOException {
Quiz quiz = new Quiz(5L, "Title", "Short desc");
writeEntityToJson(quiz, "/com/models/Quizzes2.json");
}
我想使用相对路径将文件从DataProvider保存到资源
例外情况:
Exception in thread "main" java.io.FileNotFoundException: com\models\Quizzes5.json (The system cannot find the path specified)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:187)
at com.fasterxml.jackson.core.JsonFactory.createGenerator(JsonFactory.java:1223)
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:942)
at com.utils.DataProvider.writeEntityToJson(DataProvider.java:33)
at com.utils.DataProvider.main(DataProvider.java:50)
线程“main”java.io.FileNotFoundException:com\models\Quizzes5.json中的异常(系统找不到指定的路径)
位于java.base/java.io.FileOutputStream.open0(本机方法)
位于java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
位于java.base/java.io.FileOutputStream(FileOutputStream.java:237)
位于java.base/java.io.FileOutputStream。(FileOutputStream.java:187)
位于com.fasterxml.jackson.core.JsonFactory.createGenerator(JsonFactory.java:1223)
位于com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:942)
在com.utils.DataProvider.writeEntityToJson(DataProvider.java:33)
位于com.utils.DataProvider.main(DataProvider.java:50)
有些事情发生了。添加System.out.println(新文件(path).getAbsolutePath())
,您将知道文件的实际位置。顺便说一句,这不是一条相对路径。这是一条绝对路径。相对路径不是以/
@JB开头的。没错,它会在磁盘“D”上创建目录com/models/Quizzes.json,但是如何使路径相对?我想在resourcesAgain中创建此文件(和目录),方法是不使用/
启动路径。路径将与当前目录相对,即您(或您的IDE)执行java
命令以启动应用程序的目录。在源目录中存储文件没有多大意义。你不应该用外部数据污染你的数据源。您的应用程序的最终用户将没有任何源目录。@JB我遇到异常,请检查描述,我已经更新了。不要发布代码的图像来询问我们为什么会出现异常。相反,将代码作为文本发布,并将异常的完整而准确的堆栈跟踪作为文本发布。