为文本文件添加文本行的最佳策略

时间:2014-10-26 16:09:06

标签: java file io bufferedreader

我使用txt文件,使用PrintWriter类创建它们。这允许我使用println(...)方法在txt文件中打印一些内容。

但现在我需要在我创建的列表末尾添加一些内容。像这样:

PrintWriter writer = new PrintWriter("File.txt", "UTF-8");

writer.println("Hello");
writer.println("Josh!");

writer.close();

结果是这样的文件:

  

您好

     

约什!

但如果我想在文字底部添加新单词怎么办?我希望覆盖文件" File.txt"内容更新?

  

你好

     

约什!

     

你好吗?

我正在想类似的事情,"好的我必须在最后添加另一行,所以读取所有文件,然后写另一个文件(具有相同的名称和内容)在最后添加一个新行& #34;,但这似乎太奇怪了,我觉得还有另一种简单的方法可以做到。还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

你的怀疑是正确的。

您应该使用try with resources(Java 7 +):

try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("File.txt", true)))) {
    out.println("How are you?");
}catch (IOException e) {
    //exception handling left as an exercise for the reader
}

FileWriter constructor的第二个参数将告诉它附加到文件(而不是清除文件)。对于昂贵的编写器(即FileWriter),建议使用BufferedWriter,并且使用PrintWriter可以访问您可能从System.out中习惯使用的println语法。但是BufferedWriter和PrintWriter包装并不是绝对必要的。

此外,这允许您在每次运行时附加到文件,而不是替换整个文件。最后,尝试使用资源意味着您不必致电.close(),它就是为您完成的! Grabbed from here

答案 1 :(得分:1)

您可以简单地使用FileWriter,它有一个可以启用的附加模式:

    FileWriter writer = new FileWriter("File.txt");

    writer.write("Hello\n");

    writer.write("Josh!\n");

    writer.close();

    writer = new FileWriter("File.txt", true);

    writer.append("Great!");

    writer.close();