title: What is a good Java library to zip/unzip files?
body: <p>I looked at the default Zip library that comes with the JDK and the Apache compression libs and I am unhappy with them for 3 reasons:</p>
  
  <ol>
  <li><p>They are bloated and have bad API design. I have to <a href="http://www.codejava.net/java-se/file-io/programmatically-extract-a-zip-file-using-java" rel="noreferrer">write 50 lines of boiler plate byte array output, zip input, file out streams and close relevant streams and catch exceptions and move byte buffers on my own</a>? Why can't I have a simple API that looks like this <code>Zipper.unzip(InputStream zipFile, File targetDirectory, String password = null)</code> and <code>Zipper.zip(File targetDirectory, String password = null)</code> that just works?</p></li>
  <li><p>It seems zipping unzipping destroys file meta-data and password handling is broken.</p></li>
  <li><p>Also, all the libraries I tried were 2-3x slow compared to the command line zip tools I get with UNIX?</p></li>
  </ol>
  
  <p>For me (2) and (3) are minor points but I really want a good tested library with a one-line interface.</p>