code: public ZipFile getZipFile(final File file) throws IOException {
          try {
              if (System.getSecurityManager() == null)
                  return new ZipFile(file);
              try {
                  return AccessController.doPrivileged(new PrivilegedExceptionAction<ZipFile>() {
                      @Override
                      public ZipFile run() throws IOException {
                          return new ZipFile(file);
                      }
                  }, controlContext);
              } catch (PrivilegedActionException e) {
                  if (e.getException() instanceof IOException)
                      throw (IOException) e.getException();
                  throw (RuntimeException) e.getException();
              }
          } catch (ZipException e) {
              ZipException zipNameException = new ZipException("Exception in opening zip file: " + file.getPath()); //$NON-NLS-1$
              zipNameException.initCause(e);
              throw zipNameException;
          } catch (IOException e) {
              throw new IOException("Exception in opening zip file: " + file.getPath(), e); //$NON-NLS-1$
          }
      }
docs: Returns a ZipFile. Same as calling
  new ZipFile(file)
  
  @param file the file to get a ZipFile for
  @return a ZipFile
  @throws IOException if an error occured