如何确认java BufferedWriter成功写入文本文件

时间:2015-08-01 05:21:36

标签: java java-io bufferedwriter

制作随机密码生成器。生成密码后,我没有遇到任何问题,密码将保存到文本文件中。我将BufferedWriter放在 try-with-resources 块中,然后有一个catch块,所以如果有IOException,我会收到通知。但我想以某种方式打印(到控制台)密码是否实际写入包含我使用该程序随机生成的每个密码的文本文件。

// password generator above
// Export passwords to txt file to save:

        File destination = new File("/Users/danielpersonius/Desktop/random passwords.txt");
        if(!destination.exists()){
            destination.createNewFile();
        }
            try(BufferedWriter bw = new BufferedWriter(new FileWriter(destination.getAbsoluteFile(),true))){
                // FileWriter(path, true) assures that the BufferedWriter appends to the previously created 
                // text file, not overwrites
                String formatted_output = String.format("%s%n", password);
                bw.write(formatted_output);
                Thread.sleep(1000); System.out.println("Password Successfully saved to \"random passwords.txt\"");
            }catch(IOException e){
               System.err.println("Export error: " + e.getMessage());
            }

现在,程序会自动打印Successfully saved...,但有没有办法实际测试是否存在,如果未写入文本文件则打印Unsuccessful

编辑:写入失败只会出现在我的catch块中吗?

1 个答案:

答案 0 :(得分:2)

Java中write()

Writer方法不会报告写入成功,但是它们会在失败时抛出IOException

如果您有BufferedWriter,则在实际写入发生之前缓存写入,因此为了查看更改,您需要通过以下方式将内容刷新到Writer

  1. 手动调用flush()方法,
  2. 调用close()方法也会自动刷新