code: public static List<String> unzip(final File zipFile, final String destination, String encoding) {
      List<String> fileNames = CollectUtils.newArrayList();
      String dest = destination;
      if (!destination.endsWith(File.separator)) {
        dest = destination + File.separator;
      }
      ZipFile file;
      try {
        file = null;
        if (null == encoding) file = new ZipFile(zipFile);
        else file = new ZipFile(zipFile, encoding);
        Enumeration<ZipArchiveEntry> en = file.getEntries();
        ZipArchiveEntry ze = null;
        while (en.hasMoreElements()) {
          ze = en.nextElement();
          File f = new File(dest, ze.getName());
          if (ze.isDirectory()) {
            f.mkdirs();
            continue;
          } else {
            f.getParentFile().mkdirs();
            InputStream is = file.getInputStream(ze);
            OutputStream os = new FileOutputStream(f);
            IOs.copy(is, os);
            is.close();
            os.close();
            fileNames.add(f.getAbsolutePath());
          }
        }
        file.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
      return fileNames;
    }
docs: <p>
  unzip.
  </p>
  
  @param zipFile a {@link java.io.File} object.
  @param destination a {@link java.lang.String} object.
  @param encoding a {@link java.lang.String} object.
  @return a {@link java.util.List} object.