Package com.opengamma.util

Source Code of com.opengamma.util.ZipUtils

/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opengamma.OpenGammaRuntimeException;

/**
* Utility methods to assist with ZIP files.
* <p>
* This is a thread-safe static utility class.
*/
public final class ZipUtils {

  /** Logger. */
  private static final Logger s_logger = LoggerFactory.getLogger(ZipUtils.class);

  /**
   * Restricted constructor
   */
  private ZipUtils() {
  }

  //-------------------------------------------------------------------------
  /**
   * Unzips a ZIP archive.
   *
   * @param archive  the archive file, not null
   * @param outputDir  the output directory, not null
   */
  public static void unzipArchive(final File archive, final File outputDir) {
    ArgumentChecker.notNull(archive, "archive");
    ArgumentChecker.notNull(outputDir, "outputDir");

    s_logger.debug("Unzipping file:{} to {}", archive, outputDir);
    try {
      FileUtils.forceMkdir(outputDir);
      unzipArchive(new ZipFile(archive), outputDir);
    } catch (Exception ex) {
      throw new OpenGammaRuntimeException("Error while extracting file: " + archive + " to: " + outputDir, ex);
    }
  }

  //-------------------------------------------------------------------------
  /**
   * Unzips a ZIP archive.
   *
   * @param zipFile  the archive file, not null
   * @param outputDir  the output directory, not null
   */
  public static void unzipArchive(final ZipFile zipFile, final File outputDir) {
    ArgumentChecker.notNull(zipFile, "zipFile");
    ArgumentChecker.notNull(outputDir, "outputDir");
   
    try {
      Enumeration<? extends ZipEntry> entries = zipFile.entries();
      while (entries.hasMoreElements()) {
        ZipEntry entry = entries.nextElement();
        if (entry.isDirectory()) {
          FileUtils.forceMkdir(new File(outputDir, entry.getName()));
          continue;
        }
        File entryDestination = new File(outputDir, entry.getName());
        entryDestination.getParentFile().mkdirs();
        InputStream in = zipFile.getInputStream(entry);
        OutputStream out = new FileOutputStream(entryDestination);
        IOUtils.copy(in, out);
        IOUtils.closeQuietly(in);
        IOUtils.closeQuietly(out);
      }
      zipFile.close();
    } catch (IOException ex) {
      throw new OpenGammaRuntimeException("Error while extracting file: " + zipFile.getName() + " to: " + outputDir, ex);
    }
  }

}
TOP

Related Classes of com.opengamma.util.ZipUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.