作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道在创建将内容写入 ServletOutputStream 的 byte[] 时是否有特定规则或最佳实践?
byte[] buffer = new byte[1024];
int r = 0;
try {
in = new BufferedInputStream(new FileInputStream(new File("/path/to/the/some/file")));
sos = response.getOutputStream();
while ((r = in.read(buffer, 0, buffer.length)) != -1) {
sos.write(buffer, 0, r);
在上面的代码中,byte[] lenth 是 1024。如果我在 tomcat 中运行我的 servlet,我是否需要将缓冲区的长度与 tomcat 缓冲区的长度相匹配?还是真的不重要? Tomcat 默认缓冲区大小可能是 4096 而我的 byte[] 可以说是 20000
不确定问题是否有意义,但自从我增加了代码中的 byte[] 长度后,我就遇到了 indexoutofboundsexception。之前 byte[] 的长度是 1Kb,我改成了 64kb,开始出现 indexoutofboundsexception
最佳答案
难道你不能忘记缓冲区和容易出错的循环并简单地调用:
IOUtils.copy(in, response.getOutputStream());
http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html
我知道这不是您问题的确切答案,但我更喜欢干净且防弹的代码,而不是有问题的优化。
关于tomcat - 应写入 ServletOutPutStream 的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4936858/
我是一名优秀的程序员,十分优秀!