写入文本文件

时间:2014-05-06 07:54:12

标签: java

所以我使用这个函数写入文本文件,但文本文件在执行后总是空的。任何人都可以看到错误可能是什么?我已经坚持了一段时间。

public static void writeTextFile(String fileName, String s) {
    FileWriter output = null;
    try {
      output = new FileWriter(fileName);
      BufferedWriter writer = new BufferedWriter(output);
      writer.write(s);
    } catch (Exception e) {
      throw new RuntimeException(e);
    } finally {
      if (output != null) {
        try {
          output.close();
        } catch (IOException e) {
          // Ignore issues during closing
        }
      }
    }

  }

4 个答案:

答案 0 :(得分:1)

写完输出后,你应该确保flush并关闭套接字,特别是因为你使用的是缓冲输出。

writer.write(s);
writer.flush();
writer.close();

如果不这样做,BufferedWriter将等待其他数据,但确实没有,并且程序执行突然停止。 在这里使用flush是可选的,因为当关闭它时,flush是隐式的,但我个人每次都需要确保它出来时就调用它。就像上厕所一样;)

答案 1 :(得分:1)

只需将您更改为包含writer.close();,如下所示

 try {
      output = new FileWriter(fileName);
      BufferedWriter writer = new BufferedWriter(output);
      writer.write(s);
      writer.close();
    }
//remaining code

您的数据未保存在文件中的原因是,仅当您致电writer.flush();时才会保存数据并且调用writer.flush()方法足以保存数据。但是你需要像writer.close();那样关闭BufferedWriter()以避免资源泄漏。在关闭流之前,close()为您调用flush()方法。

答案 2 :(得分:0)

使用缓冲区写东西时,必须在结束时关闭它

writer.close(); 

答案 3 :(得分:0)

如果没有关闭缓冲区,您就无法在文本文件中看到输出 尝试添加此代码

 writer.close()