Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson writeValue()到文件不使用相对路径_Java_Json_File_Io_Jackson - Fatal编程技术网

Java Jackson writeValue()到文件不使用相对路径

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

我正试图将一个对象写入jackson的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我遇到异常,请检查描述,我已经更新了。不要发布代码的图像来询问我们为什么会出现异常。相反,将代码作为文本发布,并将异常的完整而准确的堆栈跟踪作为文本发布。