您的位置:首页 > 编程语言 > Java开发

java 解压,压缩单个文件

2016-01-11 13:45 381 查看
// 压缩单个文件

public static void doZip(String srcpath, String zipName) throws IOException {

// 声明一个要压缩的文件

File srcfile = new File(srcpath);

if (!srcfile.exists()) {

System.err.println(“要压缩的文件不存在!”);

System.exit(1);

}

//判断父路径是否存在

File zfile=new File(zipName);

if (!zfile.getParentFile().exists()) {

zfile.getParentFile().mkdirs();//如果不存在创建父路径

}

// 封装要压缩的文件

InputStream in = new FileInputStream(srcfile);

// 封装压缩后的路径

FileOutputStream fos = new FileOutputStream(zipName); //

ZipOutputStream zout = new ZipOutputStream(fos);

// 设置一个缓冲数组

byte[] by = new byte[1024];

int len = 0;

//(默认-1) 设置压缩等级(0-9),9最高压缩比,比GZIP压缩比更大,但是速度比它慢;

//经过粗略测试,zip的7等级跟GZIP压缩比类似;

zout.setLevel(7);

// 创建ZIP条目。传入文件名(带尾缀)

ZipEntry zipEntry = new ZipEntry(srcfile.getName());

// 开始写入新的 ZIP文件条目并将流定位到条目数据的开始处

zout.putNextEntry(zipEntry);

// 每次读取1kb

while ((len = in.read(by)) != -1) {

zout.write(by, 0, len);

}

zout.closeEntry();

zout.flush();

zout.close();

in.close();

System.out.println(“压缩成功!”);

}

// 解压单个文件

public static void UnZip(String zipName) throws IOException{

File zipfile = new File(zipName);

if (!zipfile.exists()) {

System.err.println(“要解压的文件不存在!”);

System.exit(1);

}

FileInputStream fis=new FileInputStream(zipfile);

//封装待解压文件

ZipInputStream zis=new ZipInputStream(fis);

ZipEntry zip=zis.getNextEntry();

//获取待解压文件的父路径

String parent=zipfile.getParent();

//封装解压后的路径

FileOutputStream fos=new

FileOutputStream(parent+”/”+zip.getName());

byte by[]=new byte[1024];

int len;

while((len=zis.read(by))!=-1){

fos.write(by, 0, len);

}

fos.flush();

fos.close();

zis.closeEntry();

zis.close();

System.out.println(“解压成功!”);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: