数据流直接生成zip压缩包(文件主要是对csv格式)
来源:互联网 发布:node需要nginx吗 编辑:程序博客网 时间:2024/05/22 05:00
最近在做爬虫项目的时候遇到了点问题,就是从别人的服务器请求后获得的响应byte[]数据,并不想在本地服务器进行转存后再下载,所以就尝试了直接生成下载包。
public void export_1 (HttpServletResponse response, HttpServletRequest request) {//相关网络请求及响应操作省略此处{//dosomething}//定义打出的压缩包的名称String zipName = "测试";//定义写出流ZipOutputStream zos = null;BufferedOutputStream bos = null;try {response.setContentType("application/zip");response.setCharacterEncoding("utf-8"); //这里需要针对打出的压缩包名称的编码格式进行乱码处理:new String(("压缩包名称").getBytes("GBK"), "iso8859-1")response.setHeader("Content-Disposition", "attachment; filename=\""+ new String((zipName + ".zip").getBytes("GBK"), "iso8859-1") + "\"");OutputStream stream = response.getOutputStream();bos = new BufferedOutputStream(stream, 64 * 1024);zos = new ZipOutputStream(bos);//为后续的 DEFLATED 条目设置压缩级别zos.setLevel(1);//为要添加的文件设置文件名称zos.putNextEntry(new ZipEntry("单个的文件名称"));Writer w = new OutputStreamWriter(zos, "GBK");//这个地方可以单条数据进行写入,也可以把读取到的文件byte[]明确的转为字符串直接写入w.write("生成的csv文件内容");w.flush();} catch (Exception e) {e.printStackTrace();} finally {try {zos.close();bos.close();} catch (IOException e) {e.printStackTrace();}}}
这是最基础的操作,后续有其它需求的可在此基础上扩展,当然,如果通过HttpURLConnection获取到的getInputStream()数据流,是打好的zip包及其他格式也可以通过在此基础上扩展达到目的.
此贴为备注贴,方便以后用到的时候查看。
另附上inputStream流转为byte[]代码
/** * 将http返回的数据流转为byte[] * @param http * @return * @throws IOException */public static byte[] inputStreamToBytes(HttpURLConnection http) throws IOException {byte[] data = null;InputStream stream = http.getInputStream ();try {int len = http.getContentLength ();if (len >= 0) {data = new byte[len];int off = 0;while (off < len) {int read = stream.read (data, off, len - off);if (read < 0)throw new IOException ();off += read;}} else {ByteArrayOutputStream baos = new ByteArrayOutputStream ();byte[] buffer = new byte[4096];for (;;) {int read = stream.read (buffer, 0, buffer.length);if (read < 0)break;baos.write (buffer, 0, read);}baos.close ();data = baos.toByteArray ();}} catch (Exception e) {e.printStackTrace();} finally {stream.close ();}return data;}
0 0
- 数据流直接生成zip压缩包(文件主要是对csv格式)
- java打包文件生成zip压缩包
- 把文件压缩为ZIP格式的压缩包
- 压缩解压缩文件(zip格式)
- java对zip格式的文件压缩解压工具类
- Java 生成zip压缩包
- PHP生成zip压缩包
- PHP生成zip压缩包
- DataTable直接生成csv文件
- java实现压缩指定文件夹(文件夹包含子文件夹或文件)为zip格式压缩包
- Codeigniter中上传压缩包(rar和zip格式)
- 读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码(支付宝对账单为例)
- 读取Assets目录下的文件信息(此处主要是读取Zip包和Apk的信息)
- java-压缩目录生成ZIP包
- 对zip压缩包进行解压
- 使用Java zip包和apach 的ant包对文件、文件夹进行压缩,兼容中文
- 压缩zip文件和解压zip格式的文件
- C# 文件压缩与解压(ZIP格式)
- 华为初级:字符串最后一个单词的长度
- 【WEB开发原理】Session与Cookie详解
- cma 源码分析
- 第一章 Shiro简介——《跟我学Shiro》
- 回过头看这一年多做的事
- 数据流直接生成zip压缩包(文件主要是对csv格式)
- VS2012 Debug view error list
- 几何画板如何构造扇形内部
- 地震与地球的内部构成
- 再谈iOS 7的手势滑动返回功能
- Alpha通道及合成运算
- Application Loader 的简单使用 图文
- 第十二章 正规表达式与文件格式化处理
- spring mvc中的@PathVariable