文件压缩与解压
来源:互联网 发布:找租房的软件 编辑:程序博客网 时间:2024/04/30 11:52
package com.pure.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import org.apache.tools.zip.ZipEntry;
/**
* 文件压缩工具,封装文件压缩/解压的常用操作
* 利用ant.jar包,全面解决中文问题
* @author YangXG 20050812
*/
public class DataCondensater {
/**
* 压缩单个文件,并将压缩后生成的文件放到指定目录
* @param inputFileName 要压缩的文件
* @param outputFile 压缩文件存储目录
* @throws IOException
*/
public static void zipFile(String inputFileName, String outputDir) throws IOException {
File inputFile=new File(inputFileName);
FileInputStream in = new FileInputStream(inputFile);
String outputFile=outputDir+File.separator+inputFile.getName().substring(0,inputFile.getName().lastIndexOf("."))+".zip";
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(outputFile));
zipOut.putNextEntry(new ZipEntry(inputFile.getName()));
byte[] b = new byte[1024 * 5];
int len;
while ((len = in.read(b)) != -1) {
zipOut.write(b, 0, len);
}
in.close();
zipOut.flush();
zipOut.close();
System.out.println("Successfully finish to zip file: "+inputFile.getName());
}
/**
* 将某个目录下的所有文件压缩后存储到指定路径
* @param Dir 压缩目录
* @param outputDir 压缩包存放目录
* @throws IOException
*/
public static void zipDir(String Dir,String outputDir) throws IOException{
File dir=new File(Dir);
if(!dir.isDirectory()){return;}
String savedir=outputDir+File.separator+dir.getName()+".zip";
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(savedir));
zipPrivate(zipOut,dir,dir.getName());
zipOut.flush();
zipOut.close();
System.out.println("Successfully finish to zip directory: "+dir.getName());
}
private static void zipPrivate(ZipOutputStream out,File file,String base) throws IOException{
File[] files=file.listFiles();
base=(base==""?"":(base+"/"));
for (int i = 0; i < files.length; i++) {
if(files[i].isDirectory()){
zipPrivate(out,files[i],base+files[i].getName());
}else{
String entryName=base+files[i].getName();
out.putNextEntry(new ZipEntry(entryName));
FileInputStream in = new FileInputStream(files[i]);
byte[] b = new byte[1024 * 5];
int len;
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
in.close();
}
}
}
/**
* 将zip文件解压到指定路径
* @param zipFile
* @param outputDir
* @throws IOException
*/
public static void unzip(String zipFile,String outputDir) throws IOException{
ZipFile zip=new ZipFile(zipFile);
ZipEntry entry;
InputStream inputStream;
OutputStream out;
Enumeration enumer=zip.getEntries();
while(enumer.hasMoreElements()){
entry=(ZipEntry) enumer.nextElement();
String tmpname=outputDir+File.separator+entry.getName();
File tmpFile=new File(tmpname);
if(entry.isDirectory()){
tmpFile.mkdir();
}else{
try {
tmpFile.createNewFile();
} catch (IOException e) {
if(!tmpFile.getParentFile().exists()){
tmpFile.getParentFile().mkdirs();
}
}
out=new FileOutputStream(tmpFile);
inputStream=zip.getInputStream(entry);
byte[] b = new byte[1024 * 2];
int len;
while ((len = inputStream.read(b)) != -1) {
out.write(b, 0, len);
}
out.flush();
out.close();
}
}
zip.close();
}
public static void main(String[] args) throws IOException{
String input="D://tmp//temp.zip";
String output="C://temp";
try {
unzip(input,output);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- java压缩与解压文件
- Linux文件压缩与解压
- Java文件解压与压缩
- Hadoop文件压缩与解压
- Linux文件压缩与解压
- C# 文件压缩与解压
- 文件的压缩与解压
- java文件压缩与解压
- linux文件压缩与解压
- 项目:文件压缩与解压
- 文件zip压缩与解压
- 利用ENGINE替换OPENSSL中的加解密算法
- 谈谈Listener Servlet的应用
- 备忘录
- 1
- 结构体应用
- 文件压缩与解压
- (翻译)本地化测试
- 真不爽,回来还是大热天!
- 星期总结1-12
- 一个买房的笑话
- dellphi trick
- 一些常用的Eclipse的插件
- 开发计划--网站发布系统
- 启航宣言