servletHttpResponse中通过getOutputStream()获取的OutputStream不应该用BufferedOutputStream封装

原创 2018年04月17日 19:39:19

2018/4/17

做一个媒体资料管理系统的文件下载功能,考虑到媒体文件较大,没有采用EntityResponse类封装文件,而是采用直接向OutputStream写入的方式,结果出现了文件下载总是在最后快完成的时候失败的情况,是由于outputStream被BufferedOutputStream封装,我又不了解BufferedOutputStream的flush()方法是否会调用底层流的flush方法,所以不敢调用他的flush方法,导致最后一点文件数据在buffer中无法输出,导致文件下载失败。


目前待考察的几个问题:

1.BufferedOutputStream是否会调用底层的OutputStream的flush方法。

会,之前也在不知道某个地方看到说会,然后查了一下源码

    public synchronized void flush() throws IOException {
        flushBuffer();
        out.flush();
    }

点击打开链接从这篇文章可以知道,为HttpServletResponse的outpuStream外包装一个BufferedOutputStream是没必要的,因为这个outputStream以及是有缓存的了。

用C#实现封装

本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。
  • 2017年07月23日 16:27

测试了下BufferedOutputStream的理想缓存大小

在我那台戴尔学生本上,对文件写入1千万条hello,world用FileInputStream花了52秒。因为一般是写入在page cache,估计主要花的时间是频繁的系统调用。 使用Buffere...
  • jollyjumper
  • jollyjumper
  • 2014-03-29 19:15:10
  • 2386

getOutputStream()异常的原因和解决方法

 getOutputStream()异常的原因和解决方法tomcat5下jsp出现getOutputStream() has already been called for this response...
  • yanleigis
  • yanleigis
  • 2008-12-26 15:41:00
  • 4668

BufferedOutputStream的缓冲区多大

BufferedOutputStream有一个Byte[] buf成员,按理说用下面的代码就能得到其默认大小BufferedOutputStream bos = new BufferedOutputS...
  • zhaozhi406
  • zhaozhi406
  • 2010-04-21 10:07:00
  • 5136

FileOutputStream和BufferedInputStream效率

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStr...
  • a492846462
  • a492846462
  • 2016-03-01 15:46:08
  • 577

【转】Process.OutputStream的一个例子

 【原文出处:http://www.pconline.com.cn/pcedu/empolder/gj/java/0508/693164.html】import java.io.*; public c...
  • Sammy_chan
  • Sammy_chan
  • 2007-09-09 15:09:00
  • 5949

jsp中的out对象 和 servlet中的response.getOutputStream()

web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突. 即Servlet规范说明,不能既调用 respon...
  • hejunPurple
  • hejunPurple
  • 2010-01-05 01:00:00
  • 6026

getWriter() getOutputStream() 对比 不能同时使用

getWriter() getOutputStream();   区别 1. getWriter() 用于向客户机回送字符数据 2. getOutputStream() 返回的对象,可以回送...
  • u011980994
  • u011980994
  • 2014-03-18 15:26:32
  • 1691

Java IO:BufferedOutputStream使用详解及源码分析

使用方法BufferedOutputStream继承于FilterOutputStream,提供缓冲输出流功能。缓冲输出流相对于普通输出流的优势是,它提供了一个缓冲数组,只有缓冲数组满了或者手动flu...
  • sk199048
  • sk199048
  • 2016-04-25 21:22:34
  • 587

FileOutputStream、BufferedOutputStream、FileWriter三种文件写入的对比

因为需要把在线的apk文件下载到本地,一上来就使用了FileWriter的方式进行文件写入,结果发现下载到本地的apk会提示安装包损坏,经过排查,原来FileWriter是使用的字符写入的方式,而可执...
  • Anlegor
  • Anlegor
  • 2015-03-06 16:29:52
  • 7360
收藏助手
不良信息举报
您举报文章:servletHttpResponse中通过getOutputStream()获取的OutputStream不应该用BufferedOutputStream封装
举报原因:
原因补充:

(最多只允许输入30个字)