栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用GZIPOutputStream将文件发布到servlet时文件损坏

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用GZIPOutputStream将文件发布到servlet时文件损坏

你需要打电话

((GZIPOutputStream)output2).finish();

冲洗前。在此处查看javadoc。它指出

完成压缩数据写入输出流的操作,而无需关闭基础流。将多个过滤器连续应用于同一输出流时,请使用此方法。

你在做什么 所以

for (int length = 0; (length = input.read(buffer)) > 0;)     output2.write(buffer, 0, length);}((GZIPOutputStream)output2).finish(); //Write the compressed parts// obviously make sure output2 is truly GZIPOutputStreamoutput2.flush(); //

关于 将多个过滤器连续应用于同一输出流的主题 ,这就是我的理解方式:

您有一个

OutputStream
到HTTP服务器的,即套接字连接。该
HttpUrlConnection
写头,然后你直接写体。在这种情况下(多部分),您将边界和标头发送为未压缩的字节,已压缩的文件内容,然后再次发送边界。因此,流最终看起来像这样:

      start writing with GZIPOutputStream         v    |---boundary---|---the part headers---|---gzip enpred file content bytes---|---boundary---|    ^         ^write directly with PrintWriter     use PrintWriter again

因此,您可以看到如何用不同的过滤器依次编写不同的部分。请将

PrintWriter
视为未过滤的过滤器,您提供的任何内容都将直接编写。的
GZIPOutputStream
是一个gzip滤波器,其编码(的gzip)字节它给。

至于源代码,看在你的Java
JDK的安装,你应该有一个

src.zip
包含公开的源代码文件,
java.lang*
java.util.*
java.io.*
javax.*
,等。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号