Android implementation files or folders are compressed into. zip format compressed packages

  • 2021-09-20 21:26:46
  • OfStack

This article example for everyone to share Android compressed files and folders for your reference, the specific content is as follows


 /**
   *  Compressed Files and Folders 
   *
   * @param srcFileString  Files or folders to compress 
   * @param zipFileString  Compressed completed Zip Path 
   * @throws Exception
   */
  public static void ZipFolder(String srcFileString, String zipFileString) throws Exception {
    // Create ZIP
    ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));
    // Create a file 
    File file = new File(srcFileString);
    // Compression 
    LogUtils.LOGE("---->"+file.getParent()+"==="+file.getAbsolutePath());
    ZipFiles(file.getParent()+ File.separator, file.getName(), outZip);
    // Complete and close 
    outZip.finish();
    outZip.close();
  }
 
  /**
   *  Zip file 
   *
   * @param folderString
   * @param fileString
   * @param zipOutputSteam
   * @throws Exception
   */
  private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam) throws Exception {
    LogUtils.LOGE("folderString:" + folderString + "\n" +
        "fileString:" + fileString + "\n==========================");
    if (zipOutputSteam == null)
      return;
    File file = new File(folderString + fileString);
    if (file.isFile()) {
      ZipEntry zipEntry = new ZipEntry(fileString);
      FileInputStream inputStream = new FileInputStream(file);
      zipOutputSteam.putNextEntry(zipEntry);
      int len;
      byte[] buffer = new byte[4096];
      while ((len = inputStream.read(buffer)) != -1) {
        zipOutputSteam.write(buffer, 0, len);
      }
      zipOutputSteam.closeEntry();
    } else {
      // Folder 
      String fileList[] = file.list();
      // No subfiles and compression 
      if (fileList.length <= 0) {
        ZipEntry zipEntry = new ZipEntry(fileString + File.separator);
        zipOutputSteam.putNextEntry(zipEntry);
        zipOutputSteam.closeEntry();
      }
      // Subfiles and recursion 
      for (int i = 0; i < fileList.length; i++) {
        ZipFiles(folderString+fileString+"/", fileList[i], zipOutputSteam);
      }
    }
}

Related articles: