使用java进行压缩和解压缩
java也可以进行压缩与解压缩,主要运用的是io流的一些知识。
一.对文件进行压缩
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class 压缩文件{
static void compress() {
File source=new File("E:\\ASwing��Դ");//源文件
File target=new File("E:\\as.zip");//目标文件
try(FileOutputStream fis=new FileOutputStream(target);
ZipOutputStream zos=new ZipOutputStream(fis)){
if(source.isDirectory()) {
for(File f:source.listFiles()) {
addEntry(zos, "", f);
}
}else {
addEntry(zos, "", source);
}
}catch(Exception e) {
e.printStackTrace();
}
}
static void addEntry(ZipOutputStream zos,String base,File source) {
if(source.isDirectory()) {
for(File fi:source.listFiles()) {
addEntry(zos,base+source.getName()+File.separator,fi);
}
}else {
byte buf[]=new byte[1024];
try(FileInputStream fis=new FileInputStream(source)) {
int count=-1;
zos.putNextEntry(new ZipEntry(base+source.getName()));
while((count=fis.read(buf))!=-1) {
zos.write(buf, 0, count);
zos.flush();
}
zos.closeEntry();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
compress();
}
}
二.对文件解压缩
import java.io.*;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class 解压缩 {
static void decom(){
File dir=new File("zip1\\");//源文件
File source=new File("E:\\as.zip");//目标文件
byte b[]=new byte[1024];
ZipEntry entry=null;
try ( FileInputStream fis=new FileInputStream(source);
ZipInputStream zis=new ZipInputStream(fis)){
while(true) {
entry=zis.getNextEntry();
if(entry==null) {
break;
}
else if(entry.isDirectory()){
continue;
}
File f=new File(dir,entry.getName());
if(!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}
int count=-1;
FileOutputStream fos=new FileOutputStream(f);
while((count =zis.read(b))!=-1) {
fos.write(b,0,count);
fos.flush();
}
fos.close();
zis.closeEntry();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public static void main(String[] args) {
decom();
}
}