關于Java解壓zip文件,我覺得也沒啥好多說的,就是干唄。。代碼如下:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
package com.lanyuan.assembly.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; /** * 解壓Zip文件工具類 * @author zhangyongbo * */ public class ZipUtil { private static final int buffer = 2048 ; /** * 解壓Zip文件 * @param path 文件目錄 */ public static void unZip(String path) { int count = - 1 ; String savepath = "" ; File file = null ; InputStream is = null ; FileOutputStream fos = null ; BufferedOutputStream bos = null ; savepath = path.substring( 0 , path.lastIndexOf( "." )) + File.separator; //保存解壓文件目錄 new File(savepath).mkdir(); //創建保存目錄 ZipFile zipFile = null ; try { zipFile = new ZipFile(path, "gbk" ); //解決中文亂碼問題 Enumeration<?> entries = zipFile.getEntries(); while (entries.hasMoreElements()) { byte buf[] = new byte [buffer]; ZipEntry entry = (ZipEntry)entries.nextElement(); String filename = entry.getName(); boolean ismkdir = false ; if (filename.lastIndexOf( "/" ) != - 1 ){ //檢查此文件是否帶有文件夾 ismkdir = true ; } filename = savepath + filename; if (entry.isDirectory()){ //如果是文件夾先創建 file = new File(filename); file.mkdirs(); continue ; } file = new File(filename); if (!file.exists()){ //如果是目錄先創建 if (ismkdir){ new File(filename.substring( 0 , filename.lastIndexOf( "/" ))).mkdirs(); //目錄先創建 } } file.createNewFile(); //創建文件 is = zipFile.getInputStream(entry); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos, buffer); while ((count = is.read(buf)) > - 1 ) { bos.write(buf, 0 , count); } bos.flush(); bos.close(); fos.close(); is.close(); } zipFile.close(); } catch (IOException ioe){ ioe.printStackTrace(); } finally { try { if (bos != null ){ bos.close(); } if (fos != null ) { fos.close(); } if (is != null ){ is.close(); } if (zipFile != null ){ zipFile.close(); } } catch (Exception e) { e.printStackTrace(); } } } /*public static void main(String[] args) { unZip("F:\\110000002.zip"); String f = "F:\\110000002"; File file = new File(f); String[] test=file.list(); for(int i=0;i<test.length;i++){ System.out.println(test[i]); } System.out.println("------------------"); String fileName = ""; File[] tempList = file.listFiles(); for (int i = 0; i < tempList.length; i++) { if (tempList[i].isFile()) { System.out.println("文 件:"+tempList[i]); fileName = tempList[i].getName(); System.out.println("文件名:"+fileName); } if (tempList[i].isDirectory()) { System.out.println("文件夾:"+tempList[i]); } } } */ } |
上面是第一種的代碼示例,接著是另外一種,代碼如下:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
import java.io.*; import java.nio.charset.Charset; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** * Created by wzj on 2016/9/9. */ public class UZipFile { /** * 解壓到指定目錄 */ public static void unZipFiles(String zipPath,String descDir) throws IOException { unZipFiles( new File(zipPath), descDir); } /** * 解壓文件到指定目錄 */ @SuppressWarnings ( "rawtypes" ) public static void unZipFiles(File zipFile,String descDir) throws IOException { File pathFile = new File(descDir); if (!pathFile.exists()) { pathFile.mkdirs(); } //解決zip文件中有中文目錄或者中文文件 ZipFile zip = new ZipFile(zipFile, Charset.forName( "GBK" )); for (Enumeration entries = zip.entries(); 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( "******************解壓完畢********************" ); } public static void main(String[] args) throws IOException { /** * 解壓文件 */ File zipFile = new File( "d:/資料.zip" ); String path = "d:/zipfile/" ; unZipFiles(zipFile, path); } } |
測試結果
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
d:/zipfile/資料/三大框架所有題.htm d:/zipfile/資料/三大框架所有題_files/bootstrap.css d:/zipfile/資料/三大框架所有題_files/bootstrap.js d:/zipfile/資料/三大框架所有題_files/css_global.css d:/zipfile/資料/三大框架所有題_files/jquery.js d:/zipfile/資料/三大框架所有題_files/logo.png d:/zipfile/資料/三大框架所有題_files/scripts( 1 ).php d:/zipfile/資料/三大框架所有題_files/scripts( 2 ).php d:/zipfile/資料/三大框架所有題_files/scripts.js d:/zipfile/資料/三大框架所有題_files/scripts.php d:/zipfile/資料/三大框架所有題_files/transparent.gif d:/zipfile/資料/回顧.txt d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.classpath d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.mymetadata d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.project d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/.jsdtscope d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/com.genuitec.eclipse.j2eedt.core.prefs d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/org.eclipse.jdt.core.prefs d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/org.eclipse.wst.common.component d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/org.eclipse.wst.common.project.facet.core.xml d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/org.eclipse.wst.jsdt.ui.superType.container d:/zipfile/資料/源碼/day29_00_struts2Interceptor/.settings/org.eclipse.wst.jsdt.ui.superType.name d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/ 1 .jsp d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/META-INF/MANIFEST.MF d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/action/Demo1Action. class d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/action/UserAction. class d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/interceptors/Demo1Interceptor. class d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/interceptors/LoginCheckInterceptor. class d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/struts.xml d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/asm- 3.3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/asm-commons- 3.3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/asm-tree- 3.3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-fileupload- 1.3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-io- 2.0 . 1 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-lang3- 3.1 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-logging- 1.1 . 3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/freemarker- 2.3 . 19 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/javassist- 3.11 . 0 .GA.jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/log4j- 1.2 . 17 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/ognl- 3.0 . 6 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/struts2-core- 2.3 . 15.3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/xwork-core- 2.3 . 15.3 .jar d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/WEB-INF/web.xml d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/index.jsp d:/zipfile/資料/源碼/day29_00_struts2Interceptor/WebRoot/login.jsp d:/zipfile/資料/源碼/day29_00_struts2Interceptor/src/com/itheima/action/Demo1Action.java d:/zipfile/資料/源碼/day29_00_struts2Interceptor/src/com/itheima/action/UserAction.java d:/zipfile/資料/源碼/day29_00_struts2Interceptor/src/com/itheima/interceptors/Demo1Interceptor.java d:/zipfile/資料/源碼/day29_00_struts2Interceptor/src/com/itheima/interceptors/LoginCheckInterceptor.java d:/zipfile/資料/源碼/day29_00_struts2Interceptor/src/struts.xml d:/zipfile/資料/源碼/day29_01_struts2Upload/.classpath d:/zipfile/資料/源碼/day29_01_struts2Upload/.mymetadata d:/zipfile/資料/源碼/day29_01_struts2Upload/.project d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/.jsdtscope d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/com.genuitec.eclipse.j2eedt.core.prefs d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/org.eclipse.jdt.core.prefs d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/org.eclipse.wst.common.component d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/org.eclipse.wst.common.project.facet.core.xml d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/org.eclipse.wst.jsdt.ui.superType.container d:/zipfile/資料/源碼/day29_01_struts2Upload/.settings/org.eclipse.wst.jsdt.ui.superType.name d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/ 1 .jsp d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/ 2 .jsp d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/META-INF/MANIFEST.MF d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/DownloadAction. class d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/Upload1Action. class d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/Upload1Action_zh_CN.properties d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/Upload2Action. class d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/classes/struts.xml d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/classes/美女.jpg d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/asm- 3.3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/asm-commons- 3.3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/asm-tree- 3.3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-fileupload- 1.3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-io- 2.0 . 1 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-lang3- 3.1 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-logging- 1.1 . 3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/freemarker- 2.3 . 19 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/javassist- 3.11 . 0 .GA.jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/log4j- 1.2 . 17 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/ognl- 3.0 . 6 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/struts2-core- 2.3 . 15.3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/lib/xwork-core- 2.3 . 15.3 .jar d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/WEB-INF/web.xml d:/zipfile/資料/源碼/day29_01_struts2Upload/WebRoot/success.jsp d:/zipfile/資料/源碼/day29_01_struts2Upload/src/com/itheima/action/DownloadAction.java d:/zipfile/資料/源碼/day29_01_struts2Upload/src/com/itheima/action/Upload1Action.java d:/zipfile/資料/源碼/day29_01_struts2Upload/src/com/itheima/action/Upload1Action_zh_CN.properties d:/zipfile/資料/源碼/day29_01_struts2Upload/src/com/itheima/action/Upload2Action.java d:/zipfile/資料/源碼/day29_01_struts2Upload/src/struts.xml d:/zipfile/資料/源碼/day29_01_struts2Upload/src/美女.jpg d:/zipfile/資料/源碼/day29_02_struts2ognl/.classpath d:/zipfile/資料/源碼/day29_02_struts2ognl/.mymetadata d:/zipfile/資料/源碼/day29_02_struts2ognl/.project d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/.jsdtscope d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/com.genuitec.eclipse.j2eedt.core.prefs d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/org.eclipse.jdt.core.prefs d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/org.eclipse.wst.common.component d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/org.eclipse.wst.common.project.facet.core.xml d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/org.eclipse.wst.jsdt.ui.superType.container d:/zipfile/資料/源碼/day29_02_struts2ognl/.settings/org.eclipse.wst.jsdt.ui.superType.name d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 1 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 2 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 3 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 4 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 5 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 6 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/ 7 .jsp d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/META-INF/MANIFEST.MF d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/action/Demo1Action. class d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/action/Demo2Action. class d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/action/Demo3Action. class d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/domain/User. class d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/classes/struts.xml d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/asm- 3.3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/asm-commons- 3.3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/asm-tree- 3.3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-fileupload- 1.3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-io- 2.0 . 1 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-lang3- 3.1 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-logging- 1.1 . 3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/freemarker- 2.3 . 19 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/javassist- 3.11 . 0 .GA.jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/log4j- 1.2 . 17 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/ognl- 3.0 . 6 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/struts2-core- 2.3 . 15.3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/lib/xwork-core- 2.3 . 15.3 .jar d:/zipfile/資料/源碼/day29_02_struts2ognl/WebRoot/WEB-INF/web.xml d:/zipfile/資料/源碼/day29_02_struts2ognl/src/com/itheima/action/Demo1Action.java d:/zipfile/資料/源碼/day29_02_struts2ognl/src/com/itheima/action/Demo2Action.java d:/zipfile/資料/源碼/day29_02_struts2ognl/src/com/itheima/action/Demo3Action.java d:/zipfile/資料/源碼/day29_02_struts2ognl/src/com/itheima/domain/User.java d:/zipfile/資料/源碼/day29_02_struts2ognl/src/struts.xml d:/zipfile/資料/課堂筆記.doc ******************解壓完畢******************** |
總結
以上就是Java解壓zip文件完整代碼分享的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!
原文鏈接:https://www.cnblogs.com/runerering/p/5959072.html