Java FileWriter未写入文件
我正在创建一个应用程序,它需要为每个用户编写一个文件(JSON格式) 应用程序已成功创建该文件,但该文件为空。在代码中,我添加了一个更精细的输出,以查看转换后的JSON字符串的外观,我注意到它是完整的(它包含所有内容,因此转换是正常的)。但该字符串不在文件中Java FileWriter未写入文件,java,json,filewriter,is-empty,Java,Json,Filewriter,Is Empty,我正在创建一个应用程序,它需要为每个用户编写一个文件(JSON格式) 应用程序已成功创建该文件,但该文件为空。在代码中,我添加了一个更精细的输出,以查看转换后的JSON字符串的外观,我注意到它是完整的(它包含所有内容,因此转换是正常的)。但该字符串不在文件中 //create a new FileWriter C:/.../42.guser FileWriter writer = null; //for every User for(int i=
//create a new FileWriter C:/.../42.guser
FileWriter writer = null;
//for every User
for(int i=0; i<users.size(); i++) {
try {
File f = new File(Users.usersDir.getPath()+"/"+i+".guser");
//Create new file
f.createNewFile();
writer = new FileWriter(f);
//convert to json and write to file. Here we get the object with KEY = keys[i].
String stringedUsr = gson.toJson(users.get(keys[i]));
logger.finer("Converted user: \""+stringedUsr+"\""); //Output seems ok
//Write (NOT WORKING)
writer.write(stringedUsr);
logger.fine("Wrote updated user \""+keys[i]+"\" to file "+f.getCanonicalPath());
} catch (IOException e) {
FAILS++;
e.printStackTrace();
}
}
//End of for
//创建一个新的FileWriter C://…/42.guser
FileWriter=null;
//对于每个用户
对于(inti=0;i首先考虑关闭您的编写器。
关闭时,它应该先flush()
您的数据(如文档中所述)
您也可以手动flush()
。首先考虑关闭您的编写器。
关闭时,它应该先flush()
您的数据(如文档中所述)
您也可以手动flush()
。尝试flush()
方法,也可以在完成时关闭writer只要关闭它就可以了。这将刷新。@AxelMontini否,因为它不会调用flush或close;-)整个重新分配业务都是一种代码味道。为什么不在使用它的块内部声明writer
,并在声明时分配它呢?始终保持变量范围尽可能小。(当然,仅此一点对您没有帮助,您需要最终关闭)。请尝试flush()
方法,并在完成时关闭writer只要关闭它就可以了。这将刷新。@AxelMontini否,因为它不会调用flush或close;-)整个重新分配业务都是一种代码气味。为什么不在使用它的块内部声明writer
,并在声明时分配它呢?始终保持变量范围尽可能小。(当然,单凭这一点是帮不了你的,你需要最后关闭)。