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 閱讀(364) 評論(0)  編輯  收藏 所屬分類: J2SE

          主站蜘蛛池模板: 紫云| 屏东市| 万全县| 铜鼓县| 岳西县| 徐州市| 定兴县| 都江堰市| 雷山县| 无为县| 贵阳市| 万山特区| 顺义区| 邢台市| 依兰县| 龙游县| 金溪县| 漳州市| 延寿县| 丰原市| 林周县| 夹江县| 平和县| 双鸭山市| 连山| 郯城县| 昔阳县| 扬州市| 罗甸县| 磐安县| 镇坪县| 栾川县| 九龙城区| 三原县| 化德县| 合肥市| 新龙县| 贡山| 游戏| 昂仁县| 白玉县|