2019独角兽企业重金招聘Python工程师标准>>>

压缩本地文件

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/*** 创建用户:杨辽* 创建时间:2016-11-01 15:52:00* 描    述:*/
public class ZipUtils {private static final Logger log = LoggerFactory.getLogger(ZipUtils.class);private ZipUtils() {};/*** 创建ZIP文件** @param sourcePath 文件或文件夹路径* @param zipPath    生成的zip文件存在路径(包括文件名)*/public static void createZip(String sourcePath, String zipPath) {FileOutputStream fos = null;ZipOutputStream zos = null;try {fos = new FileOutputStream(zipPath);zos = new ZipOutputStream(fos);writeZip(new File(sourcePath), "", zos);} catch (FileNotFoundException e) {log.error("创建ZIP文件失败", e);} finally {try {if (zos != null) {zos.close();}} catch (IOException e) {log.error("创建ZIP文件失败", e);}}}private static void writeZip(File file, String parentPath, ZipOutputStream zos) {if (file.exists()) {//处理文件夹if (file.isDirectory()) {parentPath += file.getName() + File.separator;File[] files = file.listFiles();for (File f : files) {writeZip(f, parentPath, zos);}} else {FileInputStream fis = null;DataInputStream dis = null;try {fis = new FileInputStream(file);dis = new DataInputStream(new BufferedInputStream(fis));ZipEntry ze = new ZipEntry(parentPath + file.getName());zos.putNextEntry(ze);//添加编码,如果不添加,当文件以中文命名的情况下,会出现乱码// ZipOutputStream的包一定是apache的ant.jar包。JDK也提供了打压缩包,但是不能设置编码zos.setEncoding("GBK");byte[] content = new byte[1024];int len;while ((len = fis.read(content)) != -1) {zos.write(content, 0, len);zos.flush();}} catch (IOException e) {log.error("创建ZIP文件失败", e);} finally {try {if (dis != null) {dis.close();}} catch (IOException e) {log.error("创建ZIP文件失败", e);}}}}}/*** 下载远程文件并保存到本地                *          * @param remoteFilePath 远程文件路径                   * @param localFilePath  本地文件路径           */              public static void downloadFile(String remoteFilePath, String localFilePath) {URL urlfile = null;HttpURLConnection httpUrl = null;BufferedInputStream bis = null;BufferedOutputStream bos = null;File f = new File(localFilePath);try {urlfile = new URL(remoteFilePath);httpUrl = (HttpURLConnection) urlfile.openConnection();httpUrl.connect();bis = new BufferedInputStream(httpUrl.getInputStream());bos = new BufferedOutputStream(new FileOutputStream(f));int len = 2048;byte[] b = new byte[len];while ((len = bis.read(b)) != -1) {bos.write(b, 0, len);}bos.flush();bis.close();httpUrl.disconnect();} catch (Exception e) {e.printStackTrace();} finally {try {if (bis != null) {bis.close();}if (bos != null) {bos.close();}} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {ZipUtils.createZip("D:\\zzzzzzzz\\", "D:\\ddd.zip");}

###在线下载压缩文件

package com.zichan360.springbootserver.util;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/*** 创建用户:杨辽* 创建时间:2016-11-01 15:52:00* 描    述:*/
public class ZipUtils {private static final Logger log = LoggerFactory.getLogger(ZipUtils.class);private ZipUtils() {}/*** 下载远程文件** @param remoteFilePath url*/public static InputStream downloadFile(String remoteFilePath) {/*http获取文件*/try {HttpURLConnection httpUrl = (HttpURLConnection) new URL(remoteFilePath).openConnection();InputStream stream = httpUrl.getInputStream();httpUrl.connect();return stream;} catch (Exception e) {e.printStackTrace();}return null;}/*** @param remoteFilePath url* @param zos            生成的zip文件存在路径(包括文件名)*/private static void writeZip(String remoteFilePath, ZipOutputStream zos) {UUID uuid = UUID.randomUUID();//获取远程文件流InputStream stream = downloadFile(remoteFilePath);if (null != stream) {DataInputStream dis = null;try {dis = new DataInputStream(new BufferedInputStream(stream));ZipEntry ze = new ZipEntry(uuid + ".wav");zos.putNextEntry(ze);//添加编码,如果不添加,当文件以中文命名的情况下,会出现乱码// ZipOutputStream的包一定是apache的ant.jar包。JDK也提供了打压缩包,但是不能设置编码zos.setEncoding("GBK");byte[] content = new byte[1024];int len;while ((len = stream.read(content)) != -1) {zos.write(content, 0, len);zos.flush();}} catch (IOException e) {log.error("创建ZIP文件失败", e);} finally {try {stream.close();if (dis != null) {dis.close();}} catch (IOException e) {log.error("创建ZIP文件失败", e);}}}}public static void main(String[] args) {try {FileOutputStream fos = new FileOutputStream("D:\\ddd.zip");ZipOutputStream zos = new ZipOutputStream(fos);ZipUtils.writeZip("下载地址", zos);ZipUtils.writeZip("下载地址", zos);ZipUtils.writeZip("下载地址", zos);ZipUtils.writeZip("下载地址", zos);zos.close();} catch (Exception e) {e.printStackTrace();}}
}

转载于:https://my.oschina.net/mcyy568/blog/779966

java压缩文件,在线下载文件并压缩相关推荐

  1. Java多word文件生成后进行压缩并导出下载后,压缩文件损坏并提示“不可预料的压缩文件末端”和“CRC校验失败”

    Java多word文件生成后进行压缩并导出下载后,压缩文件损坏并提示"不可预料的压缩文件末端"和"CRC校验失败" WinRAR 打开情况: 提示不可预料的压缩 ...

  2. java action下载文件,DownloadAction下载文件,该如何解决

    当前位置:我的异常网» Java Web开发 » DownloadAction下载文件,该如何解决 DownloadAction下载文件,该如何解决 www.myexceptions.net  网友分 ...

  3. 腾讯对象存储服务COS加密签名上传文件与下载文件的剖析,福利提供给所有使用Android的小伙伴们!

    在做一些用户需求的时候,公司往往需要工程师采集到更多有用的关于用户的个人信息,然后对用户群进行分析,今天我不是来分析这些的,今天我主要是说 腾讯推出的款云产品,那就是对象存储服务COS,这个产品面向所 ...

  4. servlet文件上传下载_Servlet上传文件和下载文件示例

    servlet文件上传下载 Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例 ...

  5. Servlet上传文件和下载文件示例

    Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例. 用例 我们的用例是提供一 ...

  6. 百度云盘上传文件和下载文件慢的解决办法

    百度云盘上传文件和下载文件慢的解决办法 一:上传文件慢 1. 左下角点击搜索,输入cmd,右键以管理员身份运行 2. 在弹出的窗口中输入netsh interface tcp set global a ...

  7. linux ftp 查找文件,Linux shell ftp命令根据文件日期下载文件的方法

    需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件. 可以自行扩展根据文件的大小等其他需求. 知识点总结: 1.获取文件的时间: ls -lrt|awk '{print $6" & ...

  8. centos 下载文件很慢_百度云盘上传文件和下载文件慢的解决办法

    百度云盘上传文件和下载文件慢的解决办法 一:上传文件慢 1. 左下角点击搜索,输入cmd,右键以管理员身份运行 2. 在弹出的窗口中输入netsh interface tcp set global a ...

  9. 5分钟学会Linux上传文件和下载文件命令

    Linux上传.下载文件命令 一.引言 这次,来说一下Linux中如何上传文件与下载文件的命令. rz,sz 是Linux/Unix同Windows进行ZModem文件传输的命令行工具.    优点就 ...

  10. vue 上传文件和下载文件

    vue 上传文件和下载文件 1. 上传文件 2. 下载文件 1. 上传文件 上传文件我所使用的组件是element ui 的 el-upload,我一共进行了如下两步,第一步:修改样式,因为el-up ...

最新文章

  1. java寄存器_汇编学习 1 寄存器的作用 寻址方式 - DraculaW - JavaEye技术网站
  2. 网络招聘“草莽时代”该结束了
  3. 十分钟了解分布式计算:Spark
  4. java 字节缓冲_Java字节缓冲流原理与用法详解
  5. Special Permutation 构造,min_element,贪心(900)
  6. Linux定制登录欢迎语
  7. java 线程接口_java - 实现线程的接口
  8. jquery --- 事件处理函数的event对象的几个属性(方法)说明
  9. python3怎么安装gmpy2_python2/3 模块gmpy2在linux下安装
  10. 基本算法研究1-冒泡排序算法测试
  11. Kubernetes搭建可扩展的微服务系统
  12. Java 能抵挡住 JavaScript 的进攻吗?
  13. 客户端如何获取服务器控件的值(原理与实例)
  14. IQtree:使用 SNP 数据构建 有根 系统发育树及踩坑
  15. web网站http转成https
  16. 茶叶文化网站设计与实现 HTML+CSS学生网页设计作业源码
  17. 电商-商流、物流、信息流、资金流
  18. 解决PageHelper版本不匹配,结果可能全部返回问题
  19. kubernet-- windows之kubectl的安装及使用(巧克力)
  20. 数据库 (基础数据库知识 )

热门文章

  1. 8个让程序员追悔莫及的职业建议
  2. 网页视频播放的去Flash方案
  3. 结合断线修复方法的乡村道路提取
  4. python好看图案的编程代码_利用Python绘制了一些有意思的图案
  5. 3dmax 建模插件 Rappa Tools 3 笔记
  6. 网上打印纳税申报表等预览有网格打印不显示
  7. “买家秀“与“卖家秀”
  8. C# Excel 为图表添加模拟运算表
  9. 㳟祝202205026 gerrit 公司9周年生日
  10. 对于《西游记》的看法