docs: private void zipFiles(final File file, ZipOutputStream zos) throws IOException
  	{
  		if (file.isDirectory())
  		{
  			File[] fList;
  			List<File> foundedFiles;
  			if (null != this.fileFilter)
  			{
  				final File[] tmpfList = file.listFiles(this.fileFilter);
  				final List<File> foundedDirs = FileSearchExtensions.listDirs(file);
  				if (0 < foundedDirs.size())
  				{
  					final List<File> tmp = Arrays.asList(tmpfList);
  					foundedDirs.addAll(tmp);
  					foundedFiles = foundedDirs;
  				}
  				else
  				{
  					final List<File> tmp = Arrays.asList(tmpfList);
  					foundedFiles = tmp;
  				}
  			}
  			else
  			{
  				fList = file.listFiles();
  				final List<File> tmp = Arrays.asList(fList);
  				foundedFiles = tmp;
  			}
  			for (final File foundedFile : foundedFiles)
  			{
  				this.zipFiles(foundedFile, zos);
  			}
  		}
  		else
  		{
  			this.fileLength += file.length();
  			this.fileCounter++;
  			final String absolutePath = file.getAbsolutePath();
  			if (this.dirToStart == null)
  			{
  				this.dirToStart = this.directoryToZip.getName();
  			}
  			final int index = absolutePath.indexOf(this.dirToStart);
  			final String zipEntryName = absolutePath.substring(index, absolutePath.length());
  			final byte[] b = new byte[(int)file.length()];
  			final ZipEntry cpZipEntry = new ZipEntry(zipEntryName);
  			zos.putNextEntry(cpZipEntry);
  			zos.write(b, 0, (int)file.length());
  			zos.closeEntry();
  		}
  	}