这段代码闻起来了吗?

时间:2016-06-07 14:31:17

标签: java zip findbugs

我正在使用ZipOutputStream将一些上下文写入ZIP文件。我正在使用try-with-resources语句来关闭压缩流。

写作时我必须在ZIP流中写一个String条目内容。所以我的代码看起来像这样:

try (ZipOutputStream zos = new ZipOutputStream(...)){
    ...
    zos.putNextEntry( new ZipEntry( "fileName.txt" ) );
    String content = "some text content here";
    OutputStreamWriter writer = new OutputStreamWriter( zos ); //(1)
    writer.write( content );
    writer.flush();
    ...
}

但FindBugs在第(1)行显示了OS_OPEN_STREAM警告。

你怎么看?这段代码闻起来了吗?那怎么写得更好呢?

更新。 FindBugs v.3.0.1

2 个答案:

答案 0 :(得分:0)

谢谢大家。

这是一个FindBugs错误。

有一种方法可以避免它 - 使用Apache Commons的IOUtils.write(commons-io)。

答案 1 :(得分:0)

这不是FindBugs的错误,你不要在上面的代码中关闭writer,所以它会正确地抱怨。 你应该这样做:

try (
    ZipOutputStream zos = new ZipOutputStream(...);
    OutputStreamWriter writer = new OutputStreamWriter( zos )
){
    ...
    zos.putNextEntry( new ZipEntry( "fileName.txt" ) );
    String content = "some text content here";
    writer.write( content );
    writer.flush();
    ...
}