无法将Json输出写入java中的文件

时间:2018-01-31 06:27:33

标签: java json

我正在尝试将简单的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();
}

我在互联网上也看到了类似的代码。我遵循相同但仍然不确定为什么它不将输出写入文件。

4 个答案:

答案 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();