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

          主站蜘蛛池模板: 浏阳市| 阿拉善左旗| 金乡县| 北票市| 逊克县| 澜沧| 姜堰市| 来安县| 蓝山县| 江门市| 绵阳市| 宜川县| 宕昌县| 蓝田县| 普兰县| 玉门市| 丰宁| 余庆县| 石门县| 浙江省| 乐东| 津市市| 兴安盟| 大足县| 通化市| 桑日县| 花垣县| 宁蒗| 东阳市| 台中县| 石台县| 札达县| 抚松县| 平邑县| 陕西省| 长葛市| 东莞市| 广东省| 黄平县| 盐津县| 麻江县|