BufferedOutputStream多行写入文件

时间:2014-10-07 19:25:34

标签: java bufferedwriter gzipoutputstream bufferedoutputstream

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

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 <​​/ p>

1 个答案:

答案 0 :(得分:2)

你是完全正确的,你覆盖了文件。如果您使用FileOutputStream打开它,它将从头开始。您可以通过在文件(名称)后指定true来保持流打开或使用append mode

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

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