总之,我有一个Servlet,它检索图片/视频e t.c.来自底层数据存储。为ServletResponce指定InputStream,而不是在OutputStream中复制InputStream
为了归档此我需要将文件的InputStream复制到ServletResponce * 的OutputStream *
从我的角度来看,这不是有效的,因为我需要复制的文件内存发送之前,指定InputStream会更方便,在读取缓冲区中的数据后,OutputStream会读取数据并立即发送。
我看着ServletResponce文档,它有一些缓冲区的消息数据,所以我有几个关于它的问题。
这是正确的机制吗? 如果我决定在Servlet处理结束时不发送文件? 例如: 如果我抄的InputStream在的OutputStream,然后发现,这不是授权请求,用户无权查看该对象(错误在设计也许)我仍然会发送一些数据客户,尽管这不是我想要的,或者不是。
我正好利用IOUtils.copy为我处理已经:) 最关心的是第二个问题 - 这是从我的角度来看,流动,因为我不想送任何东西,直到Servlet的处理已经结束,这可能容易出错。 4K缓冲区是IOUtils缓冲区的默认大小,因此使用另一个用于Servlet处理的缓冲区将不会有效。 如果我想发送8K数据报,我要么需要使用IOUtils读取两次,要么添加可配置的复制实现。 – mavarazy 2012-03-13 14:04:03