使用zip对文件或文件夹进行压缩, 解压缩
2013-11-19 15:29
633 查看
使用zip对文件或文件夹进行压缩, 解压缩
Java代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
* 对文件或文件夹进行压缩和解压
*
*/
publicclass ZipUtil {
/**得到当前系统的分隔符*/
// private static String separator = System.getProperty("file.separator");
/**
* 添加到压缩文件中
* @param out
* @param f
* @param base
* @throws Exception
*/
privatevoid directoryZip(ZipOutputStream out, File f, String base)throws
Exception {
// 如果传入的是目录
if (f.isDirectory()) {
File[] fl = f.listFiles();
// 创建压缩的子目录
out.putNextEntry(new ZipEntry(base +"/"));
if (base.length() ==0) {
base = "";
} else {
base = base + "/";
}
for (int i =0;
i < fl.length; i++) {
directoryZip(out, fl[i], base + fl[i].getName());
}
} else {
// 把压缩文件加入rar中
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
byte[] bb =newbyte[10240];
int aa =0;
while ((aa = in.read(bb)) != -1) {
out.write(bb, 0, aa);
}
in.close();
}
}
/**
* 压缩文件
*
* @param zos
* @param file
* @throws Exception
*/
privatevoid fileZip(ZipOutputStream zos,
e27a
File file)throws
Exception {
if (file.isFile()) {
zos.putNextEntry(new ZipEntry(file.getName()));
FileInputStream fis = new FileInputStream(file);
byte[] bb =newbyte[10240];
int aa =0;
while ((aa = fis.read(bb)) != -1) {
zos.write(bb, 0, aa);
}
fis.close();
System.out.println(file.getName());
} else {
directoryZip(zos, file, "");
}
}
/**
* 解压缩文件
*
* @param zis
* @param file
* @throws Exception
*/
privatevoid fileUnZip(ZipInputStream zis, File file)throws
Exception {
ZipEntry zip = zis.getNextEntry();
if (zip ==null)
return;
String name = zip.getName();
File f = new File(file.getAbsolutePath() +"/" + name);
if (zip.isDirectory()) {
f.mkdirs();
fileUnZip(zis, file);
} else {
f.createNewFile();
FileOutputStream fos = new FileOutputStream(f);
byte b[] =newbyte[10240];
int aa =0;
while ((aa = zis.read(b)) != -1) {
fos.write(b, 0, aa);
}
fos.close();
fileUnZip(zis, file);
}
}
/**
* 根据filePath创建相应的目录
* @param filePath
* @return
* @throws IOException
*/
private File mkdirFiles(String filePath)throws IOException{
File file = new File(filePath);
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
file.createNewFile();
return file;
}
/**
* 对zipBeforeFile目录下的文件压缩,保存为指定的文件zipAfterFile
*
* @param zipBeforeFile 压缩之前的文件
* @param zipAfterFile 压缩之后的文件
*/
publicvoid zip(String zipBeforeFile, String zipAfterFile) {
try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(mkdirFiles(zipAfterFile)));
fileZip(zos, new File(zipBeforeFile));
zos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 解压缩文件unZipBeforeFile保存在unZipAfterFile目录下
*
* @param unZipBeforeFile 解压之前的文件
* @param unZipAfterFile 解压之后的文件
*/
publicvoid unZip(String unZipBeforeFile, String unZipAfterFile)
{
try {
ZipInputStream zis = new ZipInputStream(new FileInputStream(unZipBeforeFile));
File f = new File(unZipAfterFile);
f.mkdirs();
fileUnZip(zis, f);
zis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- 使用zip对文件或文件夹进行压缩, 解压缩
- 使用apache.tool.zip 对文件以及文件夹进行压缩
- 使用tar和gzip对某文件夹内的某类型文件进行压缩与解压缩
- 使用Java zip包和apach 的ant包对文件、文件夹进行压缩,兼容中文
- windows mobile 上文件压缩与解压缩(使用ICSharpCode.SharpZipLib.Zip)
- 【Java】IO操作之使用zip包压缩和解压缩文件
- 使用QuaZip对文件进行压缩解压操作
- 使用org.apache.tools.zip包来压缩解压缩文件。
- 使用java对文件或文件夹进行压缩和加密
- C#:SevenZipSharp使用7z.dll来进行压缩与解压缩
- 使用PHP对文件进行压缩解压(zip)
- Qt使用QuaZip对文件进行压缩解压操作
- java 使用7-zip解压缩带密码的压缩文件(非Proccess方法)
- 使用windows自带的命令进行文件或文件夹的压缩
- 使用java对文件或文件夹进行压缩和加密
- 使用java.util.zip包压缩和解压缩文件
- 使用apache的工具类进行zip(rar等压缩文件)的解压
- 如何在 Windows 2000 中使用 COMPRESS、COMPACT 和 EXPAND 命令压缩或解压缩文件和文件夹
- 使用java.util.zip包压缩和解压缩文件
- 使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!