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
|
import
java.io.BufferedInputStream;
import
java.io.BufferedOutputStream;
import
java.io.File;
import
java.io.FileOutputStream;
import
java.io.InputStream;
import
java.io.OutputStream;
import
java.util.Enumeration;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipFile;
public
class
ZipOutputStreamTest {
//解压功能
public
static
void
upZipFile()
throws
Exception{
ZipFile zfile=
new
ZipFile(
"d:\\00000120131125.zip"
);
Enumeration zList=zfile.entries();
ZipEntry ze=
null
;
byte
[] buf=
new
byte
[
1024
];
while
(zList.hasMoreElements()){
ze=(ZipEntry)zList.nextElement();
if
(ze.isDirectory()){
File f=
new
File(
"D:\\"
+ze.getName());
f.mkdir();
continue
;
}
OutputStream os=
new
BufferedOutputStream(
new
FileOutputStream(getRealFileName(
"D:\\"
, ze.getName())));
InputStream is=
new
BufferedInputStream(zfile.getInputStream(ze));
int
readLen=
0
;
while
((readLen=is.read(buf,
0
,
1024
))!=-
1
) {
os.write(buf,
0
, readLen);
}
is.close();
os.close();
}
zfile.close();
}
/**
* 给定根目录,返回一个相对路径所对应的实际文件名.
* @param baseDir 指定根目录
* @param absFileName 相对路径名,来自于ZipEntry中的name
* @return java.io.File 实际的文件
*/
public
static
File getRealFileName(String baseDir, String absFileName){
String[] dirs=absFileName.split(
"/"
);
File ret=
new
File(baseDir);
if
(dirs.length>
1
){
for
(
int
i =
0
; i < dirs.length-
1
;i++) {
ret=
new
File(ret, dirs[i]);
}
if
(!ret.exists())
ret.mkdirs();
ret=
new
File(ret, dirs[dirs.length-
1
]);
return
ret;
}
return
ret;
}
/**
* @param args
* @throws Exception
*/
public
static
void
main(String[] args)
throws
Exception {
ZipOutputStreamTest zip =
new
ZipOutputStreamTest();
zip.upZipFile();
/*
*
* 文件夹压缩
String xml;
* 生成你的xml数据,存在String xml中。
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("D://test.zip"));
//声明ZipOutputStream,用来输出zip文件。
File filename = new File("D://20096");
if(!filename.exists()){
filename.mkdirs();
}
File xmld = new File("D://20096//est.xml");
if(!xmld.exists()){
xmld.mkdirs();
}
ZipEntry entry = new ZipEntry("test.xml");
//声明ZipEntry
zipOut.putNextEntry(entry);
//将entry加入到zipOut中。
DataOutputStream dataOs = new DataOutputStream(zipOut);
//利用DataOutputStream对ZipOutputStream进行包装。
dataOs.writeUTF("UTF-8");
//输出zip文件。
dataOs.close();
*/
}
}本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1331155,如需转载请自行联系原作者
|