java – 即使在.flush()/.close()之后,FileWriter也不会写入文件
发布时间:2020-12-15 05:17:19 所属栏目:Java 来源:网络整理
导读:我试图写入一个文本文件,但即使该方法创建该文件,如果它不存在,它不会写.我已经通过其他几个有类似问题的帖子,并按照建议但没有运气. 通过使用调试器,String数据包含应该写入的正确数据,但它永远不会写入文本文件. 关于我忽略的事情的任何建议将不胜感激. pr
我试图写入一个文本文件,但即使该方法创建该文件,如果它不存在,它不会写.我已经通过其他几个有类似问题的帖子,并按照建议但没有运气.
通过使用调试器,String数据包含应该写入的正确数据,但它永远不会写入文本文件. 关于我忽略的事情的任何建议将不胜感激. private static void createReservation(String filmName,String date,int noOfSeats,String username) { FileWriter fw = null; try { File bookingFile = new File("C:serverbookinginfo.txt"); if (!bookingFile.exists()) { bookingFile.createNewFile(); } fw = new FileWriter(bookingFile.getName(),true); String data = "<"+filmName+"><"+date+"><"+Integer.toString(noOfSeats)+"><"+username+">rn"; 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,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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |