/**
* com.mysoftlife
*
* ver date author
* ──────────────────────────────────
* 2013
-
8
-
6 jmj
*
* Copyright (c) 2013, gomai
*/
package
com.mysoftlife;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.util.ArrayList;
import
java.util.List;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipInputStream;
import
java.util.zip.ZipOutputStream;
/**
*
@author
jmj
*
@version
*
@Date
2013 2013
-
8
-
6 下午01:57:56
*/
public
class
Zip {
public
Zip(){}
public
List<File>
fileList
=
new
ArrayList<File>();
public
List<File> getFileList() {
return
fileList
;
}
public
void
setFileList(List<File> fileList) {
this
.
fileList
= fileList;
}
/**
* 压缩目录下的文件
*
*
@param
zipFileName
*
@param
inputFile
*
@throws
Exception
* void
*
@throws
*
@2013
-
8
-
6 下午02:47:19
*/
public
void
zip(String zipFileName,String inputFile)
throws
Exception{
zip(zipFileName,
new
File(inputFile));
}
/**
* 压缩文件
*
*
@param
zipFileName
*
@param
inputFile
*
@throws
Exception
* void
*
@throws
*
@2013
-
8
-
6 下午02:47:40
*/
public
void
zip(String zipFileName, File inputFile)
throws
Exception {
ZipOutputStream out =
new
ZipOutputStream(
new
FileOutputStream(zipFileName));
zip(out, inputFile,
""
);
System.
out
.println(
"压缩成功!"
);
out.close();
}
public
void
zip(ZipOutputStream out, File f, String base)
throws
Exception {
System.
out
.println(
"正在压缩 "
+ f.getName());
if
(f.isDirectory()) {
File[] fl = f.listFiles();
out.putNextEntry(
new
ZipEntry(base +
"/"
));
base = base.length() == 0 ?
""
: base +
"/"
;
for
(
int
i = 0; i < fl.
length
; i++) {
zip(out, fl[i], base + fl[i].getName());
}
}
else
{
out.putNextEntry(
new
ZipEntry(base));
FileInputStream in =
new
FileInputStream(f);
int
b;
while
((b = in.read()) != -1)
out.write(b);
in.close();
}
}
/**
* 解压缩
*
*
@param
zipFileName
*
@param
outputDirectory
*
@throws
Exception
* void
*
@throws
*
@2013
-
8
-
6 下午02:47:59
*/
public
void
unzip(String zipFileName, String outputDirectory)
throws
Exception {
ZipInputStream in =
new
ZipInputStream(
new
FileInputStream(zipFileName));
ZipEntry z;
while
( (z = in.getNextEntry()) !=
null
) {
System.
out
.println(
"正在解压 "
+ z.getName());
if
(z.isDirectory()) {
String name = z.getName();
name = name.substring(0, name.length() - 1);
File f =
new
File(outputDirectory + File.
separator
+ name);
f.mkdir();
System.
out
.println(
"创建目录 "
+ outputDirectory + File.
separator
+ name);
}
else
{
File f =
new
File(outputDirectory + File.
separator
+ z.getName());
f.createNewFile();
FileOutputStream out =
new
FileOutputStream(f);
//获取解压后的单个文件
if
(f!=
null
){
fileList
.add(f);
}
int
b;
while
( (b = in.read()) != -1)
out.write(b);
out.close();
}
}
in.close();
}
public
static
void
main(String[] args) {
Zip z=
new
Zip();
try
{
// z.zip("D://projects.zip", "D://projects");//压缩文件
z.unzip(
"D://wenjian//projects.zip"
,
"D://wenjian"
);
//解压缩文件
}
catch
(Exception e) {
//
TODO
Auto-generated catch block
e.printStackTrace();
}
}
}