首页 > 解决方案 > 当我尝试将每条记录写入同一个文件时,只有最后一条记录被写入 json 文件

问题描述

我调试并发现文件在每次迭代后都被重新编写。

此外,如果我不关闭文件,则不会将任何内容写入文件。我正在使用 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");

        }

标签: javajsonfilefilewriterbufferedwriter

解决方案


据我了解,您的代码有两个问题:

  1. 如果您使用不带第二个参数的 FileWriter,它将破坏原始文件 - 如果您想附加到文件中,请尝试new FileWriter("JsonFilenew.json",true)
  2. 我认为您读取文件并将其作为平面 json 写回的代码应该在循环之外,因为这应该只执行一次。

更多:您的另一个问题是,将一大堆 json 文件放在一起并不能生成合法的 json。你需要把它变成一个合法的json数组(即用'['打开;每个元素用','分隔,用']'关闭


推荐阅读