BufferedWriter 没有正确写入数据

BufferedWriter is not writing data properly

下面的代码有什么问题?在控制台中,它正在打印正确的数据,但在文件中没有数据。它正在创建 0 字节文件。

 JsonObjectBuilder mainObj= Json.createObjectBuilder();
        mainObj.add("delete",delete);
        mainObj.add("update", update);
        mainObj.add("add",add);
       
        String data = mainObj.build().toString();
        System.out.println(data); **//This line printing output**
        BufferedWriter out = new BufferedWriter(new FileWriter("D:/test.json"));
        out.write(data);

以下输出正在打印到控制台,但它正在创建 0 字节文件。

{"delete":[{"canonicalName":"Amazon"}],"update":[{"canonicalName":"Infosys"},{"canonicalName":"Google HYD"}],"add":[{"canonicalName":"Apple computers"},{"canonicalName":"Microsoft India"},{"canonicalName":"Amazon"},{"canonicalName":"Google India"},{"canonicalName":"CSC"},{"canonicalName":"INFY"}]}

如评论中所述,您忘记关闭作者。 除了 out.close() 之外,您还可以使用新语法 try-with-resources 因为 Java 7:

try (BufferedWriter out = new BufferedWriter(new FileWriter("D:/test.json"))) {
    out.write(data);
}

这将自动关闭 try 块末尾的所有 Closeables。 注意:FileWriter 不会被 try-with-resource 机制关闭,因为没有为 FileWriter 创建变量。幸运的是 BufferedWriter.close() 也将关闭传递的 FileWriter。