当前位置: 首页 > news >正文

做签证宾馆订单用啥网站淘宝网站建设教程视频

做签证宾馆订单用啥网站,淘宝网站建设教程视频,微信公众帐号平台官网,网站专业制作公司Java实现将文件或者文件夹压缩成zip 最近碰到个需要下载zip压缩包的需求#xff0c;于是我在网上找了下别人写好的zip工具类。但找了好多篇博客#xff0c;总是发现有bug。因此就自己来写了个工具类。 这个工具类的功能为#xff1a; #xff08;1#xff09;可以压缩文件…Java实现将文件或者文件夹压缩成zip 最近碰到个需要下载zip压缩包的需求于是我在网上找了下别人写好的zip工具类。但找了好多篇博客总是发现有bug。因此就自己来写了个工具类。 这个工具类的功能为 1可以压缩文件也可以压缩文件夹2同时支持压缩多级文件夹工具内部做了递归处理3碰到空的文件夹也可以压缩4可以选择是否保留原来的目录结构如果不保留所有文件跑压缩包根目录去了且空文件夹直接舍弃。注意如果不保留文件原来目录结构在碰到文件名相同的文件时会压缩失败。5代码中提供了2个压缩文件的方法一个的输入参数为文件夹路径一个为文件列表可根据实际需求选择方法。下面直接上代码 package com.ibm.scm.purchase.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List; import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream; public class ZipUtils {private static final int BUFFER_SIZE 2 * 1024;/*** 压缩成ZIP 方法1* param srcDir 压缩文件夹路径 * param out 压缩文件输出流* param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构; * false:所有文件跑到压缩包根目录下(注意不保留目录结构可能会出现同名文件,会压缩失败)* throws RuntimeException 压缩失败会抛出运行时异常*/public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure)throws RuntimeException{long start System.currentTimeMillis();ZipOutputStream zos null ;try {zos new ZipOutputStream(out);File sourceFile new File(srcDir);compress(sourceFile,zos,sourceFile.getName(),KeepDirStructure);long end System.currentTimeMillis();System.out.println(压缩完成耗时 (end - start) ms);} catch (Exception e) {throw new RuntimeException(zip error from ZipUtils,e);}finally{if(zos ! null){try {zos.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 压缩成ZIP 方法2* param srcFiles 需要压缩的文件列表* param out 压缩文件输出流* throws RuntimeException 压缩失败会抛出运行时异常*/public static void toZip(ListFile srcFiles , OutputStream out)throws RuntimeException {long start System.currentTimeMillis();ZipOutputStream zos null ;try {zos new ZipOutputStream(out);for (File srcFile : srcFiles) {byte[] buf new byte[BUFFER_SIZE];zos.putNextEntry(new ZipEntry(srcFile.getName()));int len;FileInputStream in new FileInputStream(srcFile);while ((len in.read(buf)) ! -1){zos.write(buf, 0, len);}zos.closeEntry();in.close();}long end System.currentTimeMillis();System.out.println(压缩完成耗时 (end - start) ms);} catch (Exception e) {throw new RuntimeException(zip error from ZipUtils,e);}finally{if(zos ! null){try {zos.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 递归压缩方法* param sourceFile 源文件* param zos zip输出流* param name 压缩后的名称* param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构; * false:所有文件跑到压缩包根目录下(注意不保留目录结构可能会出现同名文件,会压缩失败)* throws Exception*/private static void compress(File sourceFile, ZipOutputStream zos, String name,boolean KeepDirStructure) throws Exception{byte[] buf new byte[BUFFER_SIZE];if(sourceFile.isFile()){// 向zip输出流中添加一个zip实体构造器中name为zip实体的文件的名字zos.putNextEntry(new ZipEntry(name));// copy文件到zip输出流中int len;FileInputStream in new FileInputStream(sourceFile);while ((len in.read(buf)) ! -1){zos.write(buf, 0, len);}// Complete the entryzos.closeEntry();in.close();} else {File[] listFiles sourceFile.listFiles();if(listFiles null || listFiles.length 0){// 需要保留原来的文件结构时,需要对空文件夹进行处理if(KeepDirStructure){// 空文件夹的处理zos.putNextEntry(new ZipEntry(name /));// 没有文件不需要文件的copyzos.closeEntry();}}else {for (File file : listFiles) {// 判断是否需要保留原来的文件结构if (KeepDirStructure) {// 注意file.getName()前面需要带上父文件夹的名字加一斜杠,// 不然最后压缩包中就不能保留原来的文件结构,即所有文件都跑到压缩包根目录下了compress(file, zos, name / file.getName(),KeepDirStructure);} else {compress(file, zos, file.getName(),KeepDirStructure);}}}}}public static void main(String[] args) throws Exception {/** 测试压缩方法1 */FileOutputStream fos1 new FileOutputStream(new File(c:/mytest01.zip));ZipUtils.toZip(D:/log, fos1,true);/** 测试压缩方法2 */ListFile fileList new ArrayListFile();fileList.add(new File(D:/Java/jdk1.7.0_45_64bit/bin/jar.exe));fileList.add(new File(D:/Java/jdk1.7.0_45_64bit/bin/java.exe));FileOutputStream fos2 new FileOutputStream(new File(c:/mytest02.zip));ZipUtils.toZip(fileList, fos2);}} 二、注意事项 写该工具类时有些注意事项说一下 1支持选择是否保留原来的文件目录结构如果不保留那么空文件夹直接不用处理。 1碰到空文件夹时如果需要保留目录结构则直接添加个ZipEntry就可以了不过就是这个entry的名字后面需要带上一斜杠/表示这个是目录。 2递归时不需要把zip输出流关闭zip输出流的关闭应该是在调用完递归方法后面关闭 3递归时如果是个文件夹且需要保留目录结构那么在调用方法压缩他的子文件时需要把文件夹的名字加一斜杠给添加到子文件名字前面这样压缩后才有多级目录。
http://wiki.neutronadmin.com/news/454917/

相关文章:

  • 廊坊自助建站模板在海外做网站 卖东西
  • 怎么做一个国外网站php在网站后台建设中的优势
  • 分类信息网站建设价格公司企业查询信息平台
  • 常德网站建设产品佛山网站设计建设
  • 福建省城乡建设网站用自己的电脑建网站
  • 茶陵网站建设男生做网站运营的前景
  • 网站访客qq统计系统重庆网站排名优化教程
  • 深圳营销网站建设服务公司logo在线制作 免费
  • 公众微信网站建设dedecms公司网站怎么做
  • 网站请人做要多少钱cent安装wordpress
  • 百度小程序有什么用成都网站seo服务
  • 电子商务网站建设论文资料seo招聘职责
  • 承德市网站开发wordpress程序代码优化
  • 黑龙江建设监理协会网站做地税电子签章的网站
  • 天猫网站设计分析网站外链接自己可以怎么做的
  • 让别人做网站要注意什么6网站默认首页设置
  • 佛山营销型网站设计云南楚雄地图
  • 公司网站建设费计入什么费用python做的网站如何部署
  • 网站app免费生成软件下载全国大学生创业大赛
  • 网站文件命名潍坊关键词优化软件
  • h5高端网站开发怎么写代码自己制作网站
  • 网站结构图网站正在建设中备案
  • 怎样上传图片到自己公司网站楚雄企业网站建设公司
  • 网站建设公司简介范文网站10月份可以做哪些有意思的专题
  • 中山网站制作设计wordpress 主页图片
  • 旅游类网站建设的结论烟台网站建设地址
  • 免费下软件的网站西宁建设网站的公司
  • 北京网站开发哪家强dede网站制作教程
  • ps 制作网站wordpress漏洞上传php文件夹
  • 网站做好了前端 后端怎么做东至网站制作