精华内容
下载资源
问答
  • java 解压缩zip文件

    2010-06-21 08:51:52
    java 解压缩zip文件 java 解压缩zip文件 java 解压缩zip文件
  • JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip
  • Java解压缩ZIP文件

    2015-11-28 21:38:30
    Java解压、压缩ZIP文件

    我们需要用到第三方的jar包:winszipaes_zh_CN_supported_20120416.jar

    下载地址:

    http://pan.baidu.com/s/1hqfi5Pa

    这个包还依赖org.apache.commons.io.jar包。

    下载地址:

    http://pan.baidu.com/s/1eQuLDXg

    至于使用方式,只要看一下DecryptionZipUtil.java就会了。


    package com.ninemax.demo.zip.decrypt.zh_cn;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    import java.util.zip.DataFormatException;
    
    import org.apache.commons.io.FileUtils;
    
    import de.idyl.winzipaes.AesZipFileDecrypter;
    import de.idyl.winzipaes.AesZipFileEncrypter;
    import de.idyl.winzipaes.impl.AESDecrypter;
    import de.idyl.winzipaes.impl.AESDecrypterBC;
    import de.idyl.winzipaes.impl.AESEncrypter;
    import de.idyl.winzipaes.impl.AESEncrypterBC;
    import de.idyl.winzipaes.impl.ExtZipEntry;
    
    /**
     * 压缩指定文件或目录为ZIP格式压缩文件
     * 支持中文(修改源码后)
     * 支持密码(仅支持256bit的AES加密解密)
     * 依赖bcprov项目(bcprov-jdk16-140.jar)
     * 
     * @author zyh
     */
    public class DecryptionZipUtil {
    	
    	/**
    	 * 使用指定密码将给定文件或文件夹压缩成指定的输出ZIP文件
    	 * @param srcFile 需要压缩的文件或文件夹
    	 * @param destPath 输出路径
    	 * @param passwd 压缩文件使用的密码
    	 */
    	public static void zip(String srcFile,String destPath,String passwd) {
    		AESEncrypter encrypter = new AESEncrypterBC();
    		AesZipFileEncrypter zipFileEncrypter = null;
    		try {
    			zipFileEncrypter = new AesZipFileEncrypter(destPath, encrypter);
    			/**
    			 * 此方法是修改源码后添加,用以支持中文文件名
    			 */
    			zipFileEncrypter.setEncoding("utf8");
    			File sFile = new File(srcFile);
    			/**
    			 * AesZipFileEncrypter提供了重载的添加Entry的方法,其中:
    			 * add(File f, String passwd) 
    			 * 			方法是将文件直接添加进压缩文件
    			 * 
    			 * add(File f,  String pathForEntry, String passwd)
    			 * 			方法是按指定路径将文件添加进压缩文件
    			 * pathForEntry - to be used for addition of the file (path within zip file)
    			 */
    			doZip(sFile, zipFileEncrypter, "", passwd);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				zipFileEncrypter.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	/**
    	 * 具体压缩方法,将给定文件添加进压缩文件中,并处理压缩文件中的路径
    	 * @param file 给定磁盘文件(是文件直接添加,是目录递归调用添加)
    	 * @param encrypter AesZipFileEncrypter实例,用于输出加密ZIP文件
    	 * @param pathForEntry ZIP文件中的路径
    	 * @param passwd 压缩密码
    	 * @throws IOException
    	 */
    	private static void doZip(File file, AesZipFileEncrypter encrypter,
    			String pathForEntry, String passwd) throws IOException {
    		if (file.isFile()) {
    			pathForEntry += file.getName();
    			encrypter.add(file, pathForEntry, passwd);
    			return;
    		}
    		pathForEntry += file.getName() + File.separator;
    		for(File subFile : file.listFiles()) {
    			doZip(subFile, encrypter, pathForEntry, passwd);
    		}
    	}
    	
    	/**
    	 * 使用给定密码解压指定压缩文件到指定目录
    	 * @param inFile 指定Zip文件
    	 * @param outDir 解压目录
    	 * @param passwd 解压密码
    	 */
    	public static void unzip(String inFile, String outDir, String passwd) {
    		File outDirectory = new File(outDir);
    		if (!outDirectory.exists()) {
    			outDirectory.mkdir();
    		}
    		AESDecrypter decrypter = new AESDecrypterBC();
    		AesZipFileDecrypter zipDecrypter = null;
    		try {
    			zipDecrypter = new AesZipFileDecrypter(new File(inFile), decrypter);
    			AesZipFileDecrypter.charset = "utf-8";
    			/**
    			 * 得到ZIP文件中所有Entry,但此处好像与JDK里不同,目录不视为Entry
    			 * 需要创建文件夹,entry.isDirectory()方法同样不适用,不知道是不是自己使用错误
    			 * 处理文件夹问题处理可能不太好
    			 */
    			List<ExtZipEntry> entryList = zipDecrypter.getEntryList();
    			for(ExtZipEntry entry : entryList) {
    				String eName = entry.getName();
    				String dir = eName.substring(0, eName.lastIndexOf(File.separator) + 1);
    				File extractDir = new File(outDir, dir);
    				if (!extractDir.exists()) {
    					FileUtils.forceMkdir(extractDir);
    				}
    				/**
    				 * 抽出文件
    				 */
    				File extractFile = new File(outDir + File.separator + eName);
    				zipDecrypter.extractEntry(entry, extractFile, passwd);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (DataFormatException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				zipDecrypter.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	/**
    	 * 测试
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		/**
    		 * 压缩测试
    		 * 可以传文件或者目录
    		 */
    //		zip("M:\\ZIP\\test\\bb\\a\\t.txt", "M:\\ZIP\\test\\temp1.zip", "zyh");
    //		zip("M:\\ZIP\\test\\bb", "M:\\ZIP\\test\\temp2.zip", "zyh");
    		
    		unzip("M:\\ZIP\\test\\temp2.zip", "M:\\ZIP\\test\\temp", "zyh");
    	}
    }
    


    展开全文
  • java解压缩ZIP文件

    2011-12-13 11:09:32
    通过后台上传一个压缩文件然后直接通过代码的处理将文件解压缩
  • java解压缩zip文件

    2010-07-14 22:16:45
    zip格式是一种免费的压缩文件格式,我们可以通过java类库编写函数来解压缩它,实现winwar这类软件的功能。
  • 本系统运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩...
  • 使用java解压缩zip文件

    2008-10-08 16:36:16
    使用java实现解压缩zip文件,有详细的注释。
  • 文章目录Java解压zip文件工具类(支持zip文件夹下多级目录结构)1. 前言2. 正文2.1 解压缩后文件目录结构展示2.2 注意事项2.3...由于工作需要一个能够解压缩zip的工具类,但查看了不少博客,发现查看的文章里都只支持z...


    Java解压缩zip文件工具类(支持zip文件夹下多级目录结构)

    1. 前言

    由于工作需要一个能够解压缩zip的工具类,但查看了不少博客,发现查看的文章里都只支持zip文件夹下的一级文件结构,但实际生活中,zip文件夹下存在多级目录及文件是很随意的事情,所以萌生了封装这样一个能够解压缩多级目录结构文件的想法。

    2. 正文

    2.1 解压缩后文件目录结构展示

    在这里插入图片描述

    2.2 注意事项

    • 若zip文件中包含中文的话,可能需要制定字符编码,若不指定的话,默认使用UTF8字符编码
    • Windows系统压缩编码一般为GBKGB2312UTF8Linux系统压缩编码一般为UTF8
    • 测试数据使用GB2312能够正常解码,使用其它均不能正常解码

    2.3 异常

    2.3.1 可能会遇到的异常
    java.lang.IllegalArgumentException: MALFORMED
    	at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
    	at java.util.zip.ZipFile.getZipEntry(ZipFile.java:583)
    	at java.util.zip.ZipFile.access$900(ZipFile.java:60)
    	at java.util.zip.ZipFile$ZipEntryIterator.next(ZipFile.java:539)
    	at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:514)
    	at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:495)
    	at com.tdt.sc.utils.FileUtils.unpack(FileUtils.java:91)
    	at com.tdt.sc.utils.FileUtils.unpack(FileUtils.java:54)
    	at com.tdt.sc.utils.FileUtils.unpack(FileUtils.java:34)
    	at com.tdt.sc.utils.FileUtils.main(FileUtils.java:23)
    
    2.3.2 解决方案
    • 此异常为字符编码解码异常
    • 建议使用其它字符编码进行解码,具体参见 注意事项

    2.4 具体代码实现

    import java.io.*;
    import java.nio.charset.Charset;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    
    /**
     * @program: 
     * @description: 文件解压缩工具类
     * @author: Mr.superbeyone
     * @create: 2018-10-23 14:04
     **/
    public class FileUtils {
    
        /**
         *  此方法将默认设置解压缩后文件的保存路径为zip文件所在路径
         *      即解压缩到当前文件夹下
         * @param zip zip文件位置
         * @param charsetName 字符编码
         */
        public static void unpack(String zip, String charsetName) {
            unpack(new File(zip), charsetName);
        }
    
        /**
         *
         * @param zip zip文件位置
         * @param outputDir 解压缩后文件保存路径
         * @param charsetName 字符编码
         */
        public static void unpack(String zip, String outputDir, String charsetName) {
            unpack(new File(zip), new File(outputDir), charsetName);
        }
    
        /**
         *  此方法将默认设置解压缩后文件的保存路径为zip文件所在路径
         *      即解压缩到当前文件夹
         * @param zip zip文件位置
         * @param charsetName 字符编码
         */
        public static void unpack(File zip, String charsetName) {
            unpack(zip, null, charsetName);
        }
    
        /**
         *
         * @param zip zip文件位置
         * @param outputDir 解压缩后文件保存路径
         */
        public static void unpack(File zip, File outputDir) {
            unpack(zip, outputDir, "");
        }
    
        /**
         *
         * @param zip zip文件位置
         * @param outputDir 解压缩后文件保存路径
         * @param charsetName 字符编码
         */
        public static void unpack(File zip, File outputDir, String charsetName) {
    
            FileOutputStream out = null;
            InputStream in = null;
            //读出文件数据
            ZipFile zipFileData = null;
            ZipFile zipFile = null;
            try {
                //若目标保存文件位置不存在
                if (outputDir != null) if (!outputDir.exists()) {
                    outputDir.mkdirs();
                }
                if (charsetName != null && charsetName != "") {
                    zipFile = new ZipFile(zip.getPath(), Charset.forName(charsetName));
                } else {
                    zipFile = new ZipFile(zip.getPath(), Charset.forName("utf8"));
                }
                //zipFile = new ZipFile(zip.getPath(), Charset.forName(charsetName));
                Enumeration<? extends ZipEntry> entries = zipFile.entries();
                //处理创建文件夹
                while (entries.hasMoreElements()) {
                    ZipEntry entry = entries.nextElement();
                    String filePath = "";
    
                    if (outputDir == null) {
                        filePath = zip.getParentFile().getPath() + File.separator + entry.getName();
                    } else {
                        filePath = outputDir.getPath() + File.separator + entry.getName();
                    }
                    File file = new File(filePath);
                    File parentFile = file.getParentFile();
                    if (!parentFile.exists()) {
                        parentFile.mkdirs();
                    }
                    if (parentFile.isDirectory()) {
                        continue;
                    }
                }
                if (charsetName != null && charsetName != "") {
                    zipFileData = new ZipFile(zip.getPath(), Charset.forName(charsetName));
                } else {
                    zipFileData = new ZipFile(zip.getPath(), Charset.forName("utf8"));
                }
                Enumeration<? extends ZipEntry> entriesData = zipFileData.entries();
                while (entriesData.hasMoreElements()) {
                    ZipEntry entry = entriesData.nextElement();
                    in = zipFile.getInputStream(entry);
                    String filePath = "";
                    if (outputDir == null) {
                        filePath = zip.getParentFile().getPath() + File.separator + entry.getName();
                    } else {
                        filePath = outputDir.getPath() + File.separator + entry.getName();
                    }
                    File file = new File(filePath);
                    if (file.isDirectory()) {
                        continue;
                    }
                    out = new FileOutputStream(filePath);
                    int len = -1;
                    byte[] bytes = new byte[1024];
                    while ((len = in.read(bytes)) != -1) {
                        out.write(bytes, 0, len);
                    }
                    out.flush();
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    out.close();
                    in.close();
                    zipFile.close();
                    zipFileData.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    2.4 遗留问题

    以下问题未做处理:

    1. 压缩文件内可能包含其它压缩文件
    2. 压缩文件内若存在空文件夹,则该文件夹会被当成文件处理,即生成以该文件夹名命名的空文件

    扩展:

    • 使用第三方 jar 实现解压,解决中文乱码问题
    <dependency>
    	<groupId>org.apache.commons</groupId>
    	<artifactId>commons-compress</artifactId>
    	<version>1.8.1</version>
    </dependency>
    
    public static void unpack(File zipFile, File descDir) {
        try (ZipArchiveInputStream inputStream = getZipFile(zipFile)) {
            if (!descDir.exists()) {
                descDir.mkdirs();
            }
            ZipArchiveEntry entry = null;
            while ((entry = inputStream.getNextZipEntry()) != null) {
                if (entry.isDirectory()) {
                    File directory = new File(descDir, entry.getName());
                    directory.mkdirs();
                } else {
                    OutputStream os = null;
                    try {
                        os = new BufferedOutputStream(new FileOutputStream(new File(descDir, entry.getName())));
                        //输出文件路径信息
                        System.out.println("解压文件的当前路径为:" + descDir + entry.getName());
                        IOUtils.copy(inputStream, os);
                    } finally {
                        IOUtils.closeQuietly(os);
                    }
                }
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    private static ZipArchiveInputStream getZipFile(File zipFile) throws Exception {
        return new ZipArchiveInputStream(new BufferedInputStream(new FileInputStream(zipFile)));
    }
    
    展开全文
  • 博文链接:https://peng-jian-ming.iteye.com/blog/190572
  • 废了几个小时时间整java解压缩zip这玩意,总算写出来了,呵呵,希望对看到朋友有用! 用到了ant.jar来解决压缩中的中文乱码问题。 package unzip; import java.io.BufferedInputStream; import java.io.B

    废了几个小时时间整java解压缩zip这玩意,总算写出来了,呵呵,希望对看到朋友有用!

    用到了ant.jar来解决压缩中的中文乱码问题。

    package unzip;
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;
     
    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;
    import org.apache.tools.zip.ZipOutputStream;
     
    /**
      * 功能: 1 、实现把指定文件夹下的所有文件压缩为指定文件夹下指定 zip 文件 2 、实现把指定文件夹下的 zip 文件解压到指定目录下
      *
      * @author ffshi
      *
      */
    public class ZipUtils {
     
        public static void main(String[] args) {
     
           // 把 E 盘正则表达式文件夹下的所有文件压缩到 E 盘 stu 目录下,压缩后的文件名保存为 正则表达式 .zip
           // zip ("E:// 正则表达式 ", "E://stu // 正则表达式 .zip ");
           // 把 E 盘 stu 目录下的正则表达式 .zip 压缩文件内的所有文件解压到 E 盘 stu 目录下面
           unZip ( "E://stu// 正则表达式 .zip" , "E://stu" );
     
        }
     
        /**
          * 功能:把 sourceDir 目录下的所有文件进行 zip 格式的压缩,保存为指定 zip 文件 create date:2009- 6- 9
          * author:Administrator
          *
          * @param sourceDir
          *             E:// 我的备份
          * @param zipFile
          *             格式: E://stu //zipFile.zip 注意:加入 zipFile 我们传入的字符串值是
          *             : "E://stu //" 或者 "E://stu "
          *             如果 E 盘已经存在 stu 这个文件夹的话,那么就会出现 java.io.FileNotFoundException: E:/stu
          *             ( 拒绝访问。 ) 这个异常,所以要注意正确传参调用本函数哦
          *
          */
        public static void zip(String sourceDir, String zipFile) {
           OutputStream os;
           try {
               os = new FileOutputStream(zipFile);
               BufferedOutputStream bos = new BufferedOutputStream(os);
               ZipOutputStream zos = new ZipOutputStream(bos);
     
               File file = new File(sourceDir);
     
               String basePath = null ;
               if (file.isDirectory()) {
                  basePath = file.getPath();
               } else {
                  basePath = file.getParent();
               }
     
               zipFile (file, basePath, zos);
     
               zos.closeEntry();
               zos.close();
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
     
        }
     
        /**
          *
          * create date:2009- 6- 9 author:Administrator
          *
          * @param source
          * @param basePath
          * @param zos
          * @throws IOException
          */
        private static void zipFile(File source, String basePath,
               ZipOutputStream zos) {
           File[] files = new File[0];
     
           if (source.isDirectory()) {
               files = source.listFiles();
           } else {
               files = new File[1];
               files[0] = source;
           }
     
           String pathName;
           byte [] buf = new byte [1024];
           int length = 0;
           try {
               for (File file : files) {
                  if (file.isDirectory()) {
                      pathName = file.getPath().substring(basePath.length() + 1)
                             + "/" ;
                      zos.putNextEntry( new ZipEntry(pathName));
                      zipFile (file, basePath, zos);
                  } else {
                      pathName = file.getPath().substring(basePath.length() + 1);
                      InputStream is = new FileInputStream(file);
                      BufferedInputStream bis = new BufferedInputStream(is);
                      zos.putNextEntry( new ZipEntry(pathName));
                      while ((length = bis.read(buf)) > 0) {
                         zos.write(buf, 0, length);
                      }
                      is.close();
                  }
               }
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
     
        }
     
        /**
          * 解压 zip 文件,注意不能解压 rar 文件哦,只能解压 zip 文件 解压 rar 文件 会出现 java.io.IOException: Negative
          * seek offset 异常 create date:2009- 6- 9 author:Administrator
          *
          * @param zipfile
          *             zip 文件,注意要是正宗的 zip 文件哦,不能是把 rar 的直接改为 zip 这样会出现 java.io.IOException:
          *             Negative seek offset 异常
          * @param destDir
          * @throws IOException
          */
        public static void unZip(String zipfile, String destDir) {
     
           destDir = destDir.endsWith( "//" ) ? destDir : destDir + "//" ;
           byte b[] = new byte [1024];
           int length;
     
           ZipFile zipFile;
           try {
               zipFile = new ZipFile( new File(zipfile));
               Enumeration enumeration = zipFile.getEntries();
               ZipEntry zipEntry = null ;
     
               while (enumeration.hasMoreElements()) {
                  zipEntry = (ZipEntry) enumeration.nextElement();
                  File loadFile = new File(destDir + zipEntry.getName());
     
                  if (zipEntry.isDirectory()) {
                      // 这段都可以不要,因为每次都貌似从最底层开始遍历的
                      loadFile.mkdirs();
                  } else {
                      if (!loadFile.getParentFile().exists())
                         loadFile.getParentFile().mkdirs();
     
                      OutputStream outputStream = new FileOutputStream(loadFile);
                      InputStream inputStream = zipFile.getInputStream(zipEntry);
     
                      while ((length = inputStream.read(b)) > 0)
                         outputStream.write(b, 0, length);
     
                  }
               }
               System. out .println( " 文件解压成功 " );
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
     
        }
     
    }

    也顺便网上查了下rar格式与zip格式有什么区别:

    区别一、zip的安装比较大,并仅仅有英文版+汉化包 
    rar有官方的简体中文版,并且安装很小,不足一兆 
    区别二、winrar的压缩率较高,而zip的压缩率更低 
    区别三、zip支持的格式很多,但已经较老,不大流行 
    rar支持格式也很多,并且还是流行的 
    区别四、zip仅仅能够压缩成zip格式,不能解压rar格式;rar不仅有自己的格式,还可以压缩成zip格式并解压zip格式 
    区别五、zip的界面没有rar漂亮 
    区别六、winrar支持分卷压缩,zip不支持 
    区别七、国外很多都采用zip,因为它是免费的,rar不是免费的,在国内很流行是由于有盗版的存在;zip不能兼容rar,是因为这样必须付出一笔费用 
    
    
    WinRAR 可以创建两种不同的压缩文件格式: RAR 和 ZIP 
    ZIP 压缩文件 
    
    在 ZIP 文件的最大优点就是普及率。比如说,大部分在 Internet 的压缩文件都是 ZIP 压缩文件,所以如果你要传送压缩文件给某一个人,但你无法确定你的收件人是否有 WinRAR 来解压压缩文件的内容时,使用 ZIP 格式是个好推荐。要不然你也可以发送 自解压文件。此类的压缩文件稍微大了一点点,但不需要任何的外部程序便可以解压。 
    
    另一个 ZIP 的优点便是速度。 ZIP 压缩文件通常在创建时会比 RAR 快一些。 
    
    RAR 压缩文件 
    
    RAR 格式比 ZIP 更能够提供较好的压缩率,特别是在 固实模式 时。另外一个 RAR 的重要功能是支持 多卷 压缩文件。它们比起 ZIP 的“跨磁盘”压缩文件更加便利和简易。 WinRAR 不支持 ZIP 的磁盘拆分,如果你要创建分卷压缩文件,请使用 RAR 的分卷压缩来代替。 
    
    RAR 格式也有一些在 ZIP 中所缺乏的重要功能,例如 恢复记录,它允许物理受损数据的恢复,还能 锁定 重要的压缩文件,以防止它们被别人意外地更改。 
    
    RAR 格式可以管理的文件大小几乎是无限制的 (最大到 8,589,934,591 GB) ,而在 ZIP 压缩文件的单个文件的最大值为 4 GB。需注意的是,旧式的文件

    展开全文
  • import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;...import java.util.zip.ZipEntry
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipInputStream;
    
    
    
    
    public class UnZipDemo 
    {
    
    	public static void main(String [] args) throws IOException
    	{
    		File file = new File("F:"+File.separator+"SWT_Designer.zip");//要解压的文件
    	
    		File outFile = null;
    		ZipFile zipFile = new ZipFile(file);//创建压缩文件对象
    		ZipInputStream zi = null;
    		
    		InputStream is = null;
    		OutputStream os = null;
    		ZipEntry entry = null ;	// 每一个压缩实体
    		
    		zi = new ZipInputStream(new FileInputStream(file));// 实例化ZIpInputStream
    		
    		String dir = file.getName().substring(0, file.getName().length()-3);//解压后的文件夹名和压缩文件名(不加拓展名)相同
    		
    		while((entry=zi.getNextEntry())!=null)//得到一个压缩实体
    		{
    			System.out.println("解压缩" + entry.getName() + "文件。") ;
    			outFile = new File("F:"+ File.separator  + dir+ File.separator + entry.getName()) ;	// 定义输出的文件路径
    		    
    			if(!outFile.getParentFile().exists())    	
    		    {
    		    	outFile.getParentFile().mkdir();
    		    }
    			
    			if(!outFile.exists())    	
    		    {
    				if(outFile.isDirectory()||entry.isDirectory())
    				{
    					outFile.mkdir();
    				}else{
    					outFile.createNewFile();
    				}
    		    }
    		
    		
    		
    			
    			
    			is = zipFile.getInputStream(entry) ;	// 得到每一个实体的输入流
    
    			
    		if(outFile.isDirectory())
    		{
    			continue;
    		}else
    		{
    			os = new FileOutputStream(outFile);
    				int len = 0;
    				byte [] buf = new byte[1024*10];
    				while((len = is.read(buf))!=-1)	
    				{
    					os.write(buf, 0, len);
    				}
    					is.close();
    					os.close();
    					entry.clone();
    					
    					
    				
    			}
    			
    			
    		
    		}
    		zi.close();
    			
    	}
    }
    







    展开全文
  • java解压缩zip文件-多个.csv格式表格

    千次阅读 2016-10-19 11:28:10
    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Input
  • 用到了ant.jar来解决压缩中的中文乱码问题。 package unzip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.
  • 本篇文章主要介绍了Java解压缩zip - 解压缩多个文件或文件夹实例,非常具有实用价值,有需要的可以了解一下。
  • Java解压缩zip - 解压缩多个文件或文件夹

    万次阅读 多人点赞 2012-09-19 12:56:50
    Java解压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压。 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,348
精华内容 15,739
关键字:

java解压缩zip文件

java 订阅