code: public static void zipDir(final File srcDir, final FileFilter filter, final String destPath, final File destFile) throws IOException {
  
          Utils4J.checkNotNull("srcDir", srcDir);
          Utils4J.checkValidDir(srcDir);
          Utils4J.checkNotNull("destFile", destFile);
  
          try (final ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(destFile)))) {
              zipDir(srcDir, filter, destPath, out);
          }
  
      }
docs: Creates a ZIP file and adds all files in a directory and all it's sub directories to the archive. Only entries are added that comply
  to the file filter.
  
  @param srcDir
  Directory to add - Cannot be <code>null</code> and must be a valid directory.
  @param filter
  Filter or <code>null</code> for all files/directories.
  @param destPath
  Path to use for the ZIP archive - May be <code>null</code> or an empyt string.
  @param destFile
  Target ZIP file - Cannot be <code>null</code>.
  
  @throws IOException
  Error writing to the output stream.