java – 即使在.flush()/.close()之后,FileWriter也不会写入文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 即使在.flush()/.close()之后,FileWriter也不会写入文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1451字,纯文字阅读大概需要3分钟。
内容图文
![java – 即使在.flush()/.close()之后,FileWriter也不会写入文件](/upload/InfoBanner/zyjiaocheng/765/a258dc5005d14568bbfb9360cb123559.jpg)
我试图写入一个文本文件,但即使该方法创建该文件,如果它不存在,它不会写.我已经通过其他几个有类似问题的帖子,并按照建议但没有运气.
通过使用调试器,String数据包含应该写入的正确数据,但它永远不会写入文本文件.
关于我忽略的事情的任何建议将不胜感激.
private static void createReservation(String filmName, String date, int noOfSeats, String username) {
FileWriter fw = null;
try {
File bookingFile = new File("C:\\server\\bookinginfo.txt");
if (!bookingFile.exists())
{
bookingFile.createNewFile();
}
fw = new FileWriter(bookingFile.getName(),true);
String data = "<"+filmName+"><"+date+"><"+Integer.toString(noOfSeats)+"><"+username+">\r\n";
fw.write(data);
fw.flush();
} catch (IOException ex) {
Logger.getLogger(FilmInfoHandler.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fw.close();
} catch (IOException ex) {
Logger.getLogger(FilmInfoHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
解决方法:
知道了 – 这就是问题所在:
new FileWriter(bookingFile.getName(),true);
getName()方法只返回bookinginfo.txt,这意味着它将在当前工作目录中创建一个名为bookinginfo.txt的文件.
只需使用带有File的构造函数:
fw = new FileWriter(bookingFile, true);
另请注意,您不需要首先调用createNewFile() – 如果文件不存在,FileWriter构造函数将创建该文件.
另外,我个人不是FileWriter的粉丝 – 它总是使用平台默认编码.我建议使用包装在OutputStreamWriter中的FileOutputStream,您可以在其中指定编码.或者使用Guava辅助方法,这使得所有这些都更简单.例如:
Files.append(bookingFile, data, Charsets.UTF_8);
内容总结
以上是互联网集市为您收集整理的java – 即使在.flush()/.close()之后,FileWriter也不会写入文件全部内容,希望文章能够帮你解决java – 即使在.flush()/.close()之后,FileWriter也不会写入文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。