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。
下面的代码有什么问题?在控制台中,它正在打印正确的数据,但在文件中没有数据。它正在创建 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。