3

如何获取 Apache POI 的文件大小HSSFWorkbook

我有类似的代码

// inside Servlet
OutputStream out = response.getOutputStream();
hSSFWorkbook.write(out);

我想在Content-Length响应中添加标题。

4

1 回答 1

4

最好的办法是在某处缓冲它,例如

ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);

int length = baos.size();
// Send length...

// Send data
OutputStream out = response.getOutputStream();
out.write( baos.toByteArray() );
out.close();

如果您想避免使用内存来缓冲,您可以使用临时文件

POI 只会在需要写出所有内容时计算大小,因为计算出大小几乎是写出工作的一半!所以,你最好一次性获得大小和序列化

于 2012-09-19T13:39:30.320 回答