压缩一个或多个文件及解压代码
package 流.文件的压缩与解压缩;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipDemo {
//压缩文件
@Test
public void zipFile() {
try {
FileInputStream fis = new FileInputStream("d://liu.jpg");
FileOutputStream fos = new FileOutputStream("d://liu.zip");
//压缩流
ZipOutputStream zos = new ZipOutputStream(fos);
//放入下一个条目
ZipEntry entry = new ZipEntry("liuxingchen.jpg");
zos.putNextEntry(entry);
int len = -1;
byte[] buffer = new byte[1024];
while ((len = fis.read(buffer)) != -1) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
fos.close();
fis.close();
} catch (Exception e) {
}
System.out.println("压缩完毕!");
}
//压缩多个文件
@Test
public void zipFiles() {
try {
//压缩流
FileInputStream fis = new FileInputStream("d://liu.jpg");
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("d://file.zip"));
//放入下一个条目
zos.putNextEntry(new ZipEntry("liu.jpg"));
//开始写入数据
byte[] buffer = new byte[1024];
int len = -1;
while ((len = fis.read(buffer)) != -1) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
fis.close();
fis = new FileInputStream("d://myfile1.txt");
zos.putNextEntry(new ZipEntry("myfile1.txt"));
while ((len = fis.read(buffer)) != -1) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
zos.close();
fis.close();
System.out.println("压缩文件完毕!");
} catch (Exception e) {
}
}
//解压缩
@Test
public void unZip() {
try {
ZipInputStream zis = new ZipInputStream(new FileInputStream("D://file.zip"));
ZipEntry entry = null;
byte[] buffer = new byte[1024];
int len = -1;
while ((entry = zis.getNextEntry()) != null) {
FileOutputStream fos = new FileOutputStream("g:/unzip/" + entry.getName());
while ((len = zis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.close();
}
zis.close();
System.out.println("解压缩完成");
} catch (Exception e) {
e.printStackTrace();
}
}
}