Java 为什么这个gson函数会保存一个空白文件?

Java 为什么这个gson函数会保存一个空白文件?,java,gson,Java,Gson,我正在尝试创建一个java应用程序,我有一个关于gson API中函数的问题。为什么这行代码生成一个空json文件而没有显示任何错误 复制此问题的示例对象: 公共类员工{ 私有字符串名称; 私人字符串占用; 公共雇员(字符串名称、字符串职业){ 超级(); this.name=名称; 这个职业=职业; } 公共字符串getName(){ 返回名称; } 公共字符串getDescription(){ 返回说明; } } //这是指一个与gson一起工作的简单java对象 toJson(这是新的F

我正在尝试创建一个java应用程序,我有一个关于gson API中函数的问题。为什么这行代码生成一个空json文件而没有显示任何错误

复制此问题的示例对象:

公共类员工{
私有字符串名称;
私人字符串占用;
公共雇员(字符串名称、字符串职业){
超级();
this.name=名称;
这个职业=职业;
}
公共字符串getName(){
返回名称;
}
公共字符串getDescription(){
返回说明;
}
}
//这是指一个与gson一起工作的简单java对象
toJson(这是新的FileWriter(新文件(“somefile.json”));

我尝试使用HashMap对象,因为OP没有java对象,但它可以与任何其他类型的java对象一起使用。
它工作正常,问题出在作者身上,您需要刷新内容并关闭流

        Map<String, String> map = new HashMap<>();
        map.put("a","b");
        map.put("c","d");
        Gson gson = new Gson();
        FileWriter writer = new FileWriter(new File("somefile.json"));
        gson.toJson(map, writer);
        writer.flush();
        writer.close();
上面的代码可以写成

try(FileWriter writer = new FileWriter(new File("somefile.json"))) {
    gson.toJson(map, writer);
    writer.flush();
}

在这里,您不需要显式地关闭流,这种代码样式比第一种代码样式更受欢迎,并且避免了将来出现任何此类错误。

您有没有收到任何错误?多发布一点代码没有,我没有任何错误。我将尝试发布更多的代码
FileWriter
实现
AutoClosable
,因此在尝试使用资源块nice:)我非常确定
flush
也可以省略,因为隐式调用的
close
方法将在关闭流之前刷新。是的,它可以是,但取决于实现:“如果您绝对地、肯定地必须确保它已被写入,请调用flush()。您可以随时调用flush,也可以随时调用它。如果没有要刷新的内容,则开销最小。”参考:
try(FileWriter writer = new FileWriter(new File("somefile.json"))) {
    gson.toJson(map, writer);
    writer.flush();
}