【发布时间】:2009-11-18 14:34:43
【问题描述】:
我正在通过各种方法写入输出流。在我关闭它之前,我怎样才能找出输出流的内容长度?
【问题讨论】:
标签: java response outputstream
我正在通过各种方法写入输出流。在我关闭它之前,我怎样才能找出输出流的内容长度?
【问题讨论】:
标签: java response outputstream
最简单的方法可能是将其包装在另一个OutputStream 实现中,该实现转发所有写请求,但保留一个内部计数器。然后,您只需写信即可。实施起来应该不会太难 - 实际上可能已经有了。
编辑:只是猜测一个合理的名称 (CountingOutputStream) 在Apache Commons IO 中实现了。
编辑:如其他地方所述,如果这是针对 HTTP 并且您的客户端尚未缓冲完整数据(在这种情况下,我认为 it 可以计算出内容长度),您可能会因为需要在写入数据之前写入长度而遇到问题。在某些情况下,您可能会发现它会达到一定的大小(客户端缓冲)然后失败。在这种情况下,大卫的解决方案将是合适的。
【讨论】:
问题是您必须在开始将任何数据写入输出流之前在响应标头中设置内容长度。所以你的选择是:
【讨论】:
您可以考虑写入自己的 ByteArrayOutputStream 并在最后将其刷新到响应输出流。
【讨论】: