public static final void compress(final File zippedFile,
			final IOHandler ioHandler, final File... files) {
		try {
			if (!zippedFile.exists()) {
				// create file write zip header
				final OutputStream out = ioHandler.openOut(zippedFile);
				final ZipOutputStream zipOut = new ZipOutputStream(out);
				zipOut.close();
				ioHandler.close(out);
			}
			final ZipFile zip = new ZipFile(zippedFile);
			final ZipOutputStreams outs = ZipCompression
					.openOut(zip, ioHandler);
			final ZipOutputStream out = outs.zipOutputStream;
			final java.nio.file.Path zipPath = zippedFile.toPath().getParent();
			for (final File file : files) {
				final String relName = zipPath.relativize(file.toPath())
						.toString();
				// System.out.println(relName);
				final ZipEntry entry = new ZipEntry(relName);
				final InputStream in = ioHandler.openIn(file);
				final byte[] buff = new byte[16000];
				int read;
				out.putNextEntry(entry);
				while ((read = in.read(buff)) > 0) {
					out.write(buff, 0, read);
				}
				ioHandler.close(in);
				out.closeEntry();
			}
			out.close();
			zip.close();
			ioHandler.close(outs.out);

			// test
		} catch (final IOException e) {
			zippedFile.delete();
			ioHandler.handleException(ExceptionHandle.TERMINATE, e);
		}
	}