壓縮文件
解壓文件
實例
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.print.attribute.standard.Compression;
public class Demo {
//文件壓縮
public void compress() {
File source = new File("E://ccnu//");
File target = new File("E://ccnu.zip");
FileOutputStream f;
ZipOutputStream z;
try {
f = new FileOutputStream(target);
z = new ZipOutputStream(f);
if(source.isDirectory()) {
for(File file:source.listFiles()) {
zip(z, "", file);
}
}else {
zip(z, "", source);
}
z.close();
f.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void zip(ZipOutputStream a, String string, File file) {
if(file.isDirectory()) {
for(File f:file.listFiles()) {
zip(a, string+file.getName()+File.separator, file);
}
}else {
byte[] b = new byte[1024];
try {
FileInputStream fi = new FileInputStream(file);
int count = -1;
a.putNextEntry(new ZipEntry(string+file.getName()));
while((count = fi.read(b)) != -1) {
a.write(b, 0, count);
a.flush();
}
fi.close();
a.closeEntry();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//文件解壓
public void decompress() {
File f =new File("E:\\zip\\");
File source = new File("E:\\ccnu.zip");
FileInputStream fis;
try {
fis = new FileInputStream(source);
ZipInputStream zis = new ZipInputStream(fis);
byte[] by = new byte[1024];
ZipEntry ze = null;
int count = -1;
FileOutputStream out = null;
if(!f.exists()) {
f.mkdirs();
}
while (true) {
ze = zis.getNextEntry();
out = new FileOutputStream(new File(f, ze.getName()));
if (ze.isDirectory()) {
continue;
}
if(ze == null) {
break;
}
while((count = zis.read(by)) != -1) {
out.write(by, 0, count);
out.flush();
}
out.close();
zis.closeEntry();
}
zis.close();
fis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo demo = new Demo();
demo.decompress();
}
}