《JAVA技巧(java实现压缩与解压缩ZIP).docx》由会员分享,可在线阅读,更多相关《JAVA技巧(java实现压缩与解压缩ZIP).docx(5页珍藏版)》请在金锄头文库上搜索。
1、 JAVA技巧(java实现压缩与解压缩ZIP)压缩的import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class Zip static final int BUFFER = 2048;publ
2、ic static void main(String argv) try BufferedInputStream origin = null;FileOutputStream dest = new FileOutputStream(“E:testmyfiles.zip“);ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest);byte data = new byteBUFFER;File f = new File(“e:testa“);File files = f.listFiles();for (in
3、t i = 0; i files.length; i+) FileInputStream fi = new FileInputStream(filesi);origin = new BufferedInputStream(fi, BUFFER);ZipEntry entry = new ZipEntry(filesi.getName();out.putNextEntry(entry);int count;while (count = origin.read(data, 0, BUFFER) != -1) out.write(data, 0, count);origin.close();out.
4、close(); catch (Exception e) e.printStackTrace();2,解压缩的。import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;public class UnZip static final i
5、nt BUFFER = 2048;public static void main(String argv) try String fileName = “E:testmyfiles.zip“;String filePath = “E:test“;ZipFile zipFile = new ZipFile(fileName);Enumeration emu = zipFile.entries();int i=0;while(emu.hasMoreElements()ZipEntry entry = (ZipEntry)emu.nextElement();/会把名目作为一个file读出一次,所以只
6、建立名目就可以,之下的文件还会被迭代到。if (entry.isDirectory()new File(filePath + entry.getName().mkdirs();continue;BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry);File file = new File(filePath + entry.getName();/参加这个的缘由是zipfile读取文件是随机读取的,考试,大提示这就造成可能先读取一个文件。/而这个文件所在的名目还没有消失过,所以要建出名目来。F
7、ile parent = file.getParentFile();if(parent != nullFileOutputStream fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos,BUFFER);int count;byte data = new byteBUFFER;while (count = bis.read(data, 0, BUFFER) != -1)bos.write(data, 0, count);bos.flush();bos.close();bis.close();zipFile.close();catch (Exception e) e.printStackTrace();