一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java解壓縮zip - 解壓縮多個文件或文件夾實例

Java解壓縮zip - 解壓縮多個文件或文件夾實例

2020-07-14 17:40isea533 JAVA教程

本篇文章主要介紹了Java解壓縮zip - 解壓縮多個文件或文件夾實例,非常具有實用價值,有需要的可以了解一下。

Java解壓縮zip - 多個文件(包括文件夾),具體如下:

對多個文件和文件夾進行壓縮,對復雜的文件目錄進行解壓。

壓縮方法使用的是可變參數,可以壓縮1到多個文件..可以寫數組的方式或者一個個寫到參數列表里面...

?
1
ZipFiles(zip,"abc",new File("d:/English"),new File("d:/發放數據.xls"));

測試文件目錄結構:

Java解壓縮zip - 解壓縮多個文件或文件夾實例

測試的壓縮內容:English文件夾和同級的兩個excel文件

?
1
File[] files = new File[]{new File("d:/English"),new File("d:/發放數據.xls"),new File("d:/中文名稱.xls")};

下面是壓縮的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
 * 壓縮文件-由于out要在遞歸調用外,所以封裝一個方法用來
 * 調用ZipFiles(ZipOutputStream out,String path,File... srcFiles)
 * @param zip
 * @param path
 * @param srcFiles
 * @throws IOException
 * @author isea533
 */
 public static void ZipFiles(File zip,String path,File... srcFiles) throws IOException{
 ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));
 ZipTest.ZipFiles(out,path,srcFiles);
 out.close();
 System.out.println("*****************壓縮完畢*******************");
 }
 /**
 * 壓縮文件-File
 * @param zipFile zip文件
 * @param srcFiles 被壓縮源文件
 * @author isea533
 */
 public static void ZipFiles(ZipOutputStream out,String path,File... srcFiles){
 path = path.replaceAll("\\*", "/");
 if(!path.endsWith("/")){
  path+="/";
 }
 byte[] buf = new byte[1024];
 try {
  for(int i=0;i<srcFiles.length;i++){
  if(srcFiles[i].isDirectory()){
   File[] files = srcFiles[i].listFiles();
   String srcPath = srcFiles[i].getName();
   srcPath = srcPath.replaceAll("\\*", "/");
   if(!srcPath.endsWith("/")){
   srcPath+="/";
   }
   out.putNextEntry(new ZipEntry(path+srcPath));
   ZipFiles(out,path+srcPath,files);
  }
  else{
   FileInputStream in = new FileInputStream(srcFiles[i]);
   System.out.println(path + srcFiles[i].getName());
   out.putNextEntry(new ZipEntry(path + srcFiles[i].getName()));
   int len;
   while((len=in.read(buf))>0){
   out.write(buf,0,len);
   }
   out.closeEntry();
   in.close();
  }
  }
 } catch (Exception e) {
  e.printStackTrace();
 }
 }

在壓縮的時候,針對文件夾進行判斷,然后遞歸壓縮文件。

然后是解壓:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
 * 解壓到指定目錄
 * @param zipPath
 * @param descDir
 * @author isea533
 */
 public static void unZipFiles(String zipPath,String descDir)throws IOException{
 unZipFiles(new File(zipPath), descDir);
 }
 /**
 * 解壓文件到指定目錄
 * @param zipFile
 * @param descDir
 * @author isea533
 */
 @SuppressWarnings("rawtypes")
 public static void unZipFiles(File zipFile,String descDir)throws IOException{
 File pathFile = new File(descDir);
 if(!pathFile.exists()){
  pathFile.mkdirs();
 }
 ZipFile zip = new ZipFile(zipFile);
 for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
  ZipEntry entry = (ZipEntry)entries.nextElement();
  String zipEntryName = entry.getName();
  InputStream in = zip.getInputStream(entry);
  String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;
  //判斷路徑是否存在,不存在則創建文件路徑
  File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
  if(!file.exists()){
  file.mkdirs();
  }
  //判斷文件全路徑是否為文件夾,如果是上面已經上傳,不需要解壓
  if(new File(outPath).isDirectory()){
  continue;
  }
  //輸出文件路徑信息
  System.out.println(outPath);
  
  OutputStream out = new FileOutputStream(outPath);
  byte[] buf1 = new byte[1024];
  int len;
  while((len=in.read(buf1))>0){
  out.write(buf1,0,len);
  }
  in.close();
  out.close();
  }
 System.out.println("******************解壓完畢********************");
 }

解壓的時候,針對文件夾判斷創建不存在的文件夾,對文件夾只創建,不進行解壓..因為解壓是針對文件的,不是文件夾,文件夾需要自己創建。

測試方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) throws IOException {
 /**
  * 壓縮文件
  */
 File[] files = new File[]{new File("d:/English"),new File("d:/發放數據.xls"),new File("d:/中文名稱.xls")};
 File zip = new File("d:/壓縮.zip");
 ZipFiles(zip,"abc",files);
 
 /**
  * 解壓文件
  */
 File zipFile = new File("d:/壓縮.zip");
 String path = "d:/zipfile/";
 unZipFiles(zipFile, path);
 }

測試方法并沒有對異常做任何處理,這是不對的,請不要模仿。

輸出結果:

abc/English/templete.xls
abc/English/中文/csdn/isea/533/abc/templete.xls
abc/English/中文/csdn/isea/533/abc/zipfile2/templete.xls
abc/English/中文/csdn/isea/533/abc/zipfile2/zipfile/abc/templete.xls
abc/English/中文/csdn/isea/533/abc/zipfile2/zipfile/abc/zipfile2/templete.xls
abc/English/中文/csdn/isea/533/abc/zipfile2/zipfile/abc/zipfile2/領卡清單.xls
abc/English/中文/csdn/isea/533/abc/zipfile2/領卡清單.xls
abc/English/中文/csdn/isea/templete.xls
abc/English/中文/csdn/isea/領卡清單.xls
abc/English/中文/csdn/templete.xls
abc/English/領卡清單.xls
abc/發放數據.xls
abc/中文名稱.xls
*****************壓縮完畢*******************
d:/zipfile/abc/中文名稱.xls
d:/zipfile/abc/發放數據.xls
d:/zipfile/abc/English/領卡清單.xls
d:/zipfile/abc/English/中文/csdn/templete.xls
d:/zipfile/abc/English/中文/csdn/isea/領卡清單.xls
d:/zipfile/abc/English/中文/csdn/isea/templete.xls
d:/zipfile/abc/English/中文/csdn/isea/533/abc/templete.xls
d:/zipfile/abc/English/templete.xls
d:/zipfile/abc/English/中文/csdn/isea/533/abc/zipfile2/templete.xls
d:/zipfile/abc/English/中文/csdn/isea/533/abc/zipfile2/zipfile/abc/templete.xls
d:/zipfile/abc/English/中文/csdn/isea/533/abc/zipfile2/zipfile/abc/zipfile2/templete.xls
d:/zipfile/abc/English/中文/csdn/isea/533/abc/zipfile2/zipfile/abc/zipfile2/領卡清單.xls
d:/zipfile/abc/English/中文/csdn/isea/533/abc/zipfile2/領卡清單.xls
******************解壓完畢********************

Java解壓縮zip - 解壓縮多個文件或文件夾實例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/isea533/article/details/7995472

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品免费视在线观看 | 黄色aaa级片 | 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 | 国产高清久久 | 久久日本片精品AAAAA国产 | 99久久国产综合精品网成人影院 | a级成人毛片免费图片 | 亚洲精品日韩专区在线观看 | 亚洲高清在线天堂精品 | 免费aⅴ片 | 欧美日韩精品乱国产538 | 好男人影视社区www在线观看 | 6080欧美一区二区三区四区 | 91韩国女主播 | 午夜影视在线观看 | 日韩欧美中文字幕一区二区三区 | 国产无限制自拍 | 国色天香社区在线视频免费观看 | 午夜影院0606 | 日韩一品在线播放视频一品免费 | 精品无码久久久久久久久 | 欧美视频一区二区三区四区 | 色综合视频在线观看 | 91精品国产亚一区二区三区 | 亚洲男人的天堂网 | 五月天91 | 欧美日韩亚洲第一区在线 | 国产一区二区三区日韩 | 天天天天天干 | 91短视频在线观看2019 | 肉搏潘金莲三级18春 | 亚洲男人天堂网站 | 99精品久久精品一区二区小说 | 国产午夜精品福利久久 | 国产高清在线播放免费观看 | 欧美一区二区福利视频 | 欧美一级h | 欧美日韩一区二区三区在线视频 | 网红刘婷hd国产高清 | 狠狠色狠狠色综合婷婷tag | 好男人影视社区www在线观看 |