import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
* 文件解压缩
*
* @author Tony
*
*/
public final class FileToZip {
FileToZip() {
}
/**
* 将存放在sourceFilePath目录下的源文件,打包成fileName名称的ZIP文件,并存放到zipFilePath。
*
* @param sourceFilePath
* 待压缩的文件路径
* @param zipFilePath
* 压缩后存放路径
* @param fileName
* 压缩后文件的名称
* @return flag
*/
public static boolean fileToZip
(String sourceFilePath,
String zipFilePath,
boolean flag = false;
File sourceFile
= new File(sourceFilePath
);
if (sourceFile.exists() == false) {
System.
out.
println(">>>>>> 待压缩的文件目录:" + sourceFilePath
+ " 不存在. <<<<<<");
} else {
try {
File zipFile
= new File(zipFilePath
+ "/" + fileName
+ ".RAR");
// File zipFile = new File(zipFilePath + "/" + fileName + ".zip");
if (zipFile.exists()) {
System.
out.
println(">>>>>> " + zipFilePath
+ " 目录下存在名字为:"
+ fileName + ".RAR" + " 打包文件. <<<<<<");
} else {
File[] sourceFiles
= sourceFile.
listFiles();
if (null == sourceFiles || sourceFiles.length < 1) {
System.
out.
println(">>>>>> 待压缩的文件目录:" + sourceFilePath
+ " 里面不存在文件,无需压缩. <<<<<<");
} else {
byte[] bufs = new byte[1024 * 10];
for (int i = 0; i < sourceFiles.length; i++) {
// 创建ZIP实体,并添加进压缩包
.getName());
zos.putNextEntry(zipEntry);
// 读取待压缩的文件并写进压缩包里
int read = 0;
while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
zos.write(bufs, 0, read);
}
}
flag = true;
}
}
e.printStackTrace();
e.printStackTrace();
} finally {
// 关闭流
try {
if (null != bis)
bis.close();
if (null != zos)
zos.close();
e.printStackTrace();
}
}
}
return flag;
}
public static void unZip
(String sourceFilePath,
String unzipFilePath
) {
File sourceFile
= new File(sourceFilePath
);
if (sourceFile.exists() == false) {
System.
out.
println(">>>>>> 待解压的文件目录:" + sourceFilePath
+ " 不存在. <<<<<<");
} else {
try {
System.
out.
println(">>>>>> 开始解压:" + sourceFilePath
+ " <<<<<<");
while ((zipEntry = zis.getNextEntry()) != null) {
String fileName
= zipEntry.
getName();
File temp
= new File(unzipFilePath
+ "\\" + fileName
);
System.
out.
println(fileName
+ ">>>>>>解压到" + unzipFilePath
);
if (!temp.getParentFile().exists()) {
temp.getParentFile().mkdirs();
}
int len = 0;
while ((len = is.read()) != -1) {
fos.write(len);
}
is.close();
}
// TODO Auto-generated catch block
e.printStackTrace();
// TODO Auto-generated catch block
e.printStackTrace();
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭流
try {
if (null != fos)
fos.close();
if (null != fis)
fis.close();
if (null != zis)
zis.close();
e.printStackTrace();
}
}
}
}
/**
* 将文件打包成ZIP压缩文件,main方法测试
*
* @param args
*/
public static void main
(String[] args
) {
String sourceFilePath
= "D:\\sss\\lp20120301.rar";
// String zipFilePath = "D:\\sss";
// String fileName = "lp20120301";
// boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath,
// fileName);
// if(flag) {
// System.out.println(">>>>>> 文件打包成功. <<<<<<");
// } else {
// System.out.println(">>>>>> 文件打包失败. <<<<<<");
// }
FileToZip.unZip(sourceFilePath, "E:\\sdf");
}
}