我有一个片段从jersey 2.22下载文件,
StreamingOutput stream = (OutputStream os) -> {
try {
os.write( get a byte array here);
} catch (Exception e) {
LOGGER.error("Failed to fetch file, id:" + fileName, e);
throw new Exception());
}
};
上面的代码正在运行,但我想知道我写的输出流是否需要关闭。
我在OutboundMessageContext中搜索了泽西的源代码
public void close() {
if(this.hasEntity()) {
try {
OutputStream e = this.getEntityStream();
e.flush();
e.close();
} catch (IOException var10) {
Logger.getLogger(OutboundMessageContext.class.getName()).log(Level.FINE, var10.getMessage(), var10);
} finally {
if(!this.committingOutputStream.isClosed()) {
try {
this.committingOutputStream.close();
} catch (IOException var9) {
Logger.getLogger(OutboundMessageContext.class.getName()).log(Level.FINE, var9.getMessage(), var9);
}
}
}
}
}
此方法是关闭实体流。我不确定这是否是使用StreamingOutput的正确关闭方法,任何人都可以帮忙吗?