ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件;
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
ZIP输入流打开后,你可以使用getNextEntry方法来读取ZIP文件中的条目数,该方法返回一个ZipEntry对象。如果到达文件的尾部,getNextEntry返回null;
while ((z = in.getNextEntry()) != null) { }
建立输出流将解压的文档输出
下面的代码只能解压单个文件;
package ZIP文件流; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; /** * 只能解压单个压缩文件 */ public class DemoZip { public static void main(String[] args) { UpZip("F:\\test.zip", "D:"); System.out.println("压缩完成"); } /** * 解压缩zip文件的方法 * * @param zipFileName * 要被解压的文件 * @param outputDirectory * 解压输出路径 */ public static void UpZip(String zipFileName, String outputDirectory) { System.out.println("解压单个文件"); try { ZipInputStream in = new ZipInputStream(new FileInputStream( zipFileName)); /* * 获取ZipInputStream中的ZipEntry条目,一个zip文件中可能包含多个ZipEntry, * 当getNextEntry方法的返回值为null,则代表ZipInputStream中没有下一个ZipEntry,输入流读取完成; */ ZipEntry z ; while ((z = in.getNextEntry()) != null) { System.out.println( z.getName()); // 创建以zip包文件名为目录名的根目录 File f = new File(outputDirectory); //创建目录 f.mkdirs(); //是否为目录 if (z.isDirectory()) { //获取名字 String name = z.getName(); //截取名字 name = name.substring(name.length() ); //文件路径 f = new File(outputDirectory + File.separator + name); //文件目录 f.mkdirs(); } else { f = new File(outputDirectory + File.separator + z.getName()); //创建新文件 f.createNewFile(); //输出流 FileOutputStream out = new FileOutputStream(f); byte[] buff = new byte[1024]; int len; while ((len = in.read(buff)) != -1) { out.write(buff, 0, len); } out.close(); } } in.close(); } catch (Exception e) { e.printStackTrace(); } } }
求大神指点怎么解压 压缩文件中的多个文件:::::