是否可以使用PrintWriter开始在某一行之后写入文件?

时间:2016-03-27 05:58:49

标签: java printwriter

这是我正在使用的基本(示例文件):

Line 1: 213124
Line 2: 243223
Line 3: 325425
Line 4: 493258
Line 5: 359823

有没有办法让PrintWriter开始写入上面显示的5行的文件,但是它只写在第5行之后?所以我想使用

    PrintWriter log = new PrintWriter("blah.txt");
    log.println("52525")

我希望它将其写入第6行,而不是覆盖第1行。

编辑:对于遇到类似问题的任何人,您想了解如何追加您的文件。在我写这篇文章时,两个人展示了如何

2 个答案:

答案 0 :(得分:1)

要附加到现有文件,请使用“追加”模式:

FileOutputStream fos = new FileOutputStream(filename,true);
PrintWriter      pw  = new PrintWriter(fos);

true构造函数的FileOutputStream参数设置追加模式。

答案 1 :(得分:0)

追加到文件,您需要使用FileWriter(String fileName, boolean append)构造函数:

try (PrintWriter log = new PrintWriter(new FileWriter("blah.txt", true))) {
    log.println("52525");
}

如果您要编写大量输出,那么BufferedWriter可能会很好,如果您需要指定字符编码,则需要使用{{包装FileOutputStream 3}}。这使链条更长:

try (PrintWriter log = new PrintWriter(
                         new BufferedWriter(
                           new OutputStreamWriter(
                             new FileOutputStream("blah.txt", true),
                             Charset.forName("UTF-8"))))) {
    log.println("52525");
}

您调用的OutputStreamWriter实际上是:

的简写
new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName)))