【发布时间】:2020-02-01 01:50:47
【问题描述】:
我正在尝试使用 FileWriter 将一些文本写入文件。程序运行时不会抛出任何异常,除了那些它的意思(写入文件是抛出异常的一部分),但文件是空白的。该文件与包含异常的 .java 文件和引发异常的 .java 文件位于同一目录中。
我正在正确刷新和关闭 FileWriter 对象,它位于 try/catch 块中,应该打印代码遇到的任何异常,我尝试使用 PrintWriter 和 FileWriter 作为参数,以及其他部分方法肯定执行。
NegativeBalanceException() throws IOException{
super("Error:negative balance");
try {
FileWriter logger = new FileWriter("logfile.txt", false);
logger.write("Error:negative balance");
logger.flush();
logger.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
我希望文件包含消息“金额超出余额 -100.0” 和“错误:负余额”。肯定会创建异常,我可以在其上调用 getMessage() 以打印上述两条消息。但是,该文件开始为空白,并在程序完成后保持空白。
【问题讨论】:
-
我认为您发布的内容没有任何明显错误。另外,我在本地运行了您的代码,它创建了一个内容为
Error:negative balance的文件。您可以尝试将文件名更改为其他名称吗?也许您有多个“logfile.txt”副本,您的代码正在写入其中一个副本,而您正在查看另一个副本以进行验证。 -
您确定正在调用此代码吗?你能添加一些独特的 System.out.println() 来确认它到达这里吗?我同意 kaan - 这段代码本身对我来说看起来不错。我认为问题出在您测试的其他地方。
-
.java 文件所在的位置也不相关;更重要的是程序在哪个目录(工作目录)执行(
System.out.println(new File("logfile.txt").getAbsolutePath()))另一种可能性,一些IDE会将(空)文件从源目录复制到生成的代码目录,覆盖它 -
@some 如果您自己发现问题,只需花一些额外的时间查看它,那么您应该再次删除此问题。您刚刚在完成调试之前发布到 SO。或者,不要在“我已修复”中进行编辑,而是发布此问题的答案,然后明天接受它作为答案。
标签: java filewriter printwriter file-writing