我正在尝试将简单的JSON数据写入文件,但似乎我的文件是空白的。它没有写任何东西。当我在java控制台中打印输出时,它显示我是正确的。
import org.json.simple.JSONObject;
JSONObject obj = new JSONObject();
obj.put("Phone Number:", "XXXXXXXXX");
obj.put("Fname:", "Mike");
obj.put("Lname:", "Miller");
obj.put("Street:", "101");
try {
FileWriter file = new FileWriter("D:\\file1.json");
file.write(obj.toJSONString());
}
catch (Exception e) {
e.printStackTrace();
}
我在互联网上也看到了类似的代码。我遵循相同但仍然不确定为什么它不将输出写入文件。
答案 0 :(得分:3)
这是更新后的工作版
public static void main(String...strings) throws IOException{
FileWriter file = new FileWriter("C:\\file1.json");
try {
JSONObject obj = new JSONObject();
obj.put("Phone Number:","XXXXXXXXX");
obj.put("Fname:","Mike");
obj.put("Lname:","Miller");
obj.put("Street:","101");
file.write(obj.toString());
}catch (Exception E)
{
System.out.println(E);
E.printStackTrace();
}finally{
file.close();
}
}
答案 1 :(得分:1)
在调用flush之前,操作系统可能无法将数据写入硬件:
public static void main(String[] args) throws Exception {
JSONObject obj = new JSONObject();
obj.put("Phone Number:","XXXXXXXXX");
obj.put("Fname:","Mike");
obj.put("Lname:","Miller");
obj.put("Street:","101");
FileWriter file = new FileWriter("D:\\file1.json");
try {
file.write(obj.toJSONString());
}catch (Exception E) {
E.printStackTrace();
} finally {
file.flush();
file.close();
}
}
答案 2 :(得分:1)
这里您没有将数据刷新到文件中。这就是数据没有写入文件的原因。如果您还想将现有数据保留在文件中,请尝试附加。以下是将新数据附加到现有文件的更新代码。
import org.json.simple.JSONObject;
JSONObject obj = new JSONObject();
obj.put("Phone Number:","XXXXXXXXX");
obj.put("Fname:","Mike");
obj.put("Lname:","Miller");
obj.put("Street:","101");
try {
FileWriter file = new FileWriter("D:\\file1.json", true); // true to append at the end of file.
file.write(obj.toJSONString());
file.flush()
}catch (Exception E)
{
E.printStackTrace();
}finally{
file.close();
}
}
答案 3 :(得分:1)
当您使用任何Files类编写代码时,我的意思是您要将内容写入文件或从文件中读取,关闭流始终是最佳做法。
代码应该是这样的,
FileWriter file = new FileWriter("D:\\file1.json");
file.write(obj.toJSONString());
file.close();