java—当我试图在同一个文件中写入每条记录时,只有最后一条记录被写入json文件

628mspwn  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(375)

我调试并发现文件在每次迭代后都会被重新写入。
另外,如果我不关闭文件,什么也不会写入文件。我使用的是bufferedwriter—我们需要显式关闭文件还是由它来处理?
这是我的密码:

JSONArray jsonArr = new JSONArray(myrecords);
        for (int i = 0; i < jsonArr.length(); i++) {
            JSONObject jsonObj = jsonArr.getJSONObject(i);
            System.out.println(jsonObj);
            BufferedWriter writer = new BufferedWriter(new FileWriter("JsonFilenew.json"));
            writer.write(jsonObj.toString());
            String records = new String(Files.readAllBytes(Paths.get("JsonFilenew.json")));
            JFlat flatMe = new JFlat(records);

            flatMe.json2Sheet().headerSeparator().getJsonAsSheet();
            file.close();
            flatMe.write2csv("new.csv");

        }
mwngjboj

mwngjboj1#

据我所知,你的代码有两个问题:
如果不使用第二个参数而使用filewriter,则会破坏原始文件-如果要附加到该文件,请尝试 new FileWriter("JsonFilenew.json",true) 我认为读取文件并将其作为平面json写回的代码应该在循环之外,因为这应该只执行一次。
更多:您的另一个问题是,仅仅将大量的json文件粘在一起并不能成为合法的json。您需要使其成为合法的json数组(即用“[”打开);每个元素用“,”分隔,并用“]”闭合

相关问题