docs: private static void compress(File source, ZipArchiveOutputStream zipOut, String zipEntryName) throws IOException {
  
  		String tempZipEntryName = $.notEmpty(zipEntryName) ? zipEntryName : source.getName();
  
  		byte[] buff = new byte[512];
  		int readLen = -1;
  		if (source.isFile()) {
  			// System.out.println("压缩文件：" + source.getAbsolutePath());
  			ZipArchiveEntry entry = new ZipArchiveEntry(tempZipEntryName);
  			zipOut.putArchiveEntry(entry);
  			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(source));
  			while ((readLen = bis.read(buff)) != -1) {
  				zipOut.write(buff, 0, readLen);
  			}
  			zipOut.closeArchiveEntry();
  			IOUtils.closeQuietly(bis);
  		} else if (source.isDirectory()) {
  			// System.out.println("**** 压缩目录：" + source.getAbsolutePath() +
  			ZipArchiveEntry entry = new ZipArchiveEntry(tempZipEntryName.concat(File.separator));
  			zipOut.putArchiveEntry(entry);
  			zipOut.closeArchiveEntry();
  			File[] files = source.listFiles();
  			if ($.notEmpty(files)) {
  				for (File file : files) {
  					compress(file, zipOut, tempZipEntryName + File.separator + file.getName());
  				}
  			}
  		}
  	}