这段代码有味道吗?
Does this code smell?
我正在使用 ZipOutputStream. And I'm using try-with-resources 关闭 zip 流的语句将一些上下文写入 ZIP 文件。
在写作时,我必须在 ZIP 流中写入一个字符串条目内容。所以我的代码看起来是这样的:
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
谢谢大家
这是一个 FindBugs 错误。
有一种方法可以避免它 - 使用来自 Apache Commons (commons-io) 的 IOUtils.write。
这不是 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();
...
}
我正在使用 ZipOutputStream. And I'm using try-with-resources 关闭 zip 流的语句将一些上下文写入 ZIP 文件。
在写作时,我必须在 ZIP 流中写入一个字符串条目内容。所以我的代码看起来是这样的:
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
谢谢大家
这是一个 FindBugs 错误。
有一种方法可以避免它 - 使用来自 Apache Commons (commons-io) 的 IOUtils.write。
这不是 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();
...
}