【问题标题】:FileWriter not writing to file at all but not throwing exceptionsFileWriter 根本不写入文件但不抛出异常
【发布时间】: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


【解决方案1】:

我找到了解决方案。我在 Eclipse 中工作,似乎相对路径从程序的工作目录开始,而不是我假设的 src 目录(以及我放置文件的位置)。我让 java 在错误的位置查找文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-29
    • 2016-05-07
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2014-09-18
    • 2014-03-13
    相关资源
    最近更新 更多