docs: public static File zip(File zipFile, Charset charset, boolean withSrcDir, File... srcFiles) throws UtilException {
  		validateFiles(zipFile, srcFiles);
  
  		try (ZipOutputStream out = getZipOutputStream(zipFile, charset)) {
  			String srcRootDir;
  			for (File srcFile : srcFiles) {
  				if(null == srcFile) {
  					continue;
  				}
  				// 如果只是压缩一个文件，则需要截取该文件的父目录
  				srcRootDir = srcFile.getCanonicalPath();
  				if (srcFile.isFile() || withSrcDir) {
  					//若是文件，则将父目录完整路径都截取掉；若设置包含目录，则将上级目录全部截取掉，保留本目录名
  					srcRootDir = srcFile.getCanonicalFile().getParentFile().getCanonicalPath();
  				}
  				// 调用递归压缩方法进行目录或文件压缩
  				zip(srcFile, srcRootDir, out);
  				out.flush();
  			}
  		} catch (IOException e) {
  			throw new UtilException(e);
  		}
  		return zipFile;
  	}