1

我制作的功能有点问题。我希望每次我给这个函数一个字符串时,它都会将我保存到同一个文件中的一个新行,但实际上现在只保存我给的最后一个字符串。这就像一次又一次地覆盖,需要一些帮助

public void WritingGZFile(String directory, String linesWithPattern, String newFile) throws IOException
    {
        newFile = directory + '\\' + newFile;
            BufferedOutputStream out = new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(
                    newFile)));
            out.write(linesWithPattern.getBytes());
            out.write("\r\n".getBytes());
            out.close();
    }

例如,在 BufferedWriter 中有一个名为 newLine 的方法可以帮助做到这一点。

但是因为我想使用 GZIPOutputStream 类,所以我需要 BufferedOutputStream。

任何想法如何做到这一点?感谢 ypu

4

1 回答 1

2

你是对的,你覆盖了文件。如果你用 a 打开它,FileOutputStream它将从头开始。您可以通过在文件(名称)之后指定来保持流打开或使用附加模式。true

BufferedOutputStream out = new BufferedOutputStream(
                                 new GZIPOutputStream(
                                       new FileOutputStream(newFile, true)
                                     )
                                );

使用 GZIPOutputStream 如果您在每一行上打开一个新流,则会有相当多的开销,但它被定义为以这种方式工作。(同样:保持打开状态也有助于此)。

于 2014-10-07T19:29:06.390 回答