java - 当我尝试将每条记录写入同一个文件时,只有最后一条记录被写入 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");
}
解决方案
据我了解,您的代码有两个问题:
- 如果您使用不带第二个参数的 FileWriter,它将破坏原始文件 - 如果您想附加到文件中,请尝试
new FileWriter("JsonFilenew.json",true)
- 我认为您读取文件并将其作为平面 json 写回的代码应该在循环之外,因为这应该只执行一次。
更多:您的另一个问题是,将一大堆 json 文件放在一起并不能生成合法的 json。你需要把它变成一个合法的json数组(即用'['打开;每个元素用','分隔,用']'关闭
推荐阅读
- pine-script - 头寸规模异常
- swiftui - 如何初始化@Binding 数组
- javascript - 用于实时工作的 HTML 文档的集成编辑器
- python - ValueError:设置了迭代器写入标志的操作数数组是只读的
- google-apps-script - 需要将此 curl 转换为 Google 应用脚本 Urlfetch
- javascript - 用字符串中的行号替换字符
- javascript - 将一个数组添加到另一个处于 React 状态的数组
- java - 在 Android Java 中测量圈数和扇区
- python - 让我的 Flask API 每分钟轮询数据库并运行相同查询的最佳方法是什么
- javascript - 直到循环中断后,异步函数才会在 while 循环中运行