paulwong

          解壓ZIP文件

          在pom.xml中加入JAR包
          <dependency>
              <groupId>commons-io</groupId>
              <artifactId>commons-io</artifactId>
          </dependency>

          ZipUtil.java
          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.nio.charset.Charset;
          import java.util.UUID;
          import java.util.zip.ZipEntry;
          import java.util.zip.ZipInputStream;

          import org.apache.commons.io.IOUtils;
          import org.slf4j.Logger;
          import org.slf4j.LoggerFactory;

          public class ZipUtil {
              
              private static Logger logger = LoggerFactory.getLogger(ZipUtil.class);
              
              public static void extractFolder(InputStream inputStream, String outputFolder) throws IOException 
              {
                  ZipInputStream zis = null;
                  try {

                      Charset GBK = Charset.forName("GBK");
                      zis = new ZipInputStream(inputStream, GBK);
                      ZipEntry entry;

                      while ((entry = zis.getNextEntry()) != null) {

                          // Create a file on HDD in the destinationPath directory
                          
          // destinationPath is a "root" folder, where you want to extract your ZIP file
                          String encoding = System.getProperty("file.encoding");
                          logger.info("encoding:"+encoding); 
                          
                          String fileName = new String(entry.getName().getBytes("GBK"), encoding);
                          File entryFile = new File(outputFolder, fileName);
          //                File entryFile = new File(outputFolder, entry.getName());
                          if (entry.isDirectory()) {

                              if (entryFile.exists()) {
                                  logger.warn("Directory {0} already exists!", entryFile);
                              } else {
                                  entryFile.mkdirs();
                              }

                          } else {

                              // Make sure all folders exists (they should, but the safer, the better ;-))
                              if (entryFile.getParentFile() != null && !entryFile.getParentFile().exists()) {
                                  entryFile.getParentFile().mkdirs();
                              }

                              // Create file on disk
                              if (!entryFile.exists()) {
                                  entryFile.createNewFile();
                              }

                              // and rewrite data from stream
                              OutputStream os = null;
                              try {
                                  os = new FileOutputStream(entryFile);
                                  IOUtils.copy(zis, os);
                              } finally {
          //                        os.close();
                                  IOUtils.closeQuietly(os);
                                  zis.closeEntry();
                              }
                          }
                      }
                  } finally {
                      IOUtils.closeQuietly(zis);
                  }
              }
              
              public static void main(String [] args) throws IOException
              {
                  final String INPUT_ZIP_FILE = "D:TESTING-FILE/ZIP/INPUT/應用.zip";
                  String OUTPUT_FOLDER = "D:/TESTING-FILE/ZIP/OUTPUT";
                  
                  OUTPUT_FOLDER += File.separator + UUID.randomUUID().toString();
                  
                  InputStream inputStream = new FileInputStream(new File(INPUT_ZIP_FILE));
                  
                  extractFolder(inputStream, OUTPUT_FOLDER);
                  
                  /*File file = new File(OUTPUT_FOLDER);
                  FileUtil.deleteFolder(file);
          */
              }

          }

          posted on 2014-10-29 17:34 paulwong 閱讀(362) 評論(0)  編輯  收藏 所屬分類: J2SE

          主站蜘蛛池模板: 天津市| 蒲江县| 平利县| 明星| 鹿泉市| 拉萨市| 无为县| 红河县| 澳门| 财经| 重庆市| 临江市| 胶南市| 平塘县| 永平县| 贞丰县| 平凉市| 区。| 巴彦淖尔市| 遂宁市| 黄冈市| 宜昌市| 平舆县| 文成县| 灯塔市| 鄯善县| 贵溪市| 松原市| 梅州市| 常熟市| 城口县| 文水县| 东源县| 海原县| 铁岭市| 梨树县| 鱼台县| 信丰县| 宜阳县| 天峨县| 兴海县|