All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jopendocument.util.Unzip Maven / Gradle / Ivy

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright 2008-2013 jOpenDocument, by ILM Informatique. All rights reserved.
 * 
 * The contents of this file are subject to the terms of the GNU
 * General Public License Version 3 only ("GPL").  
 * You may not use this file except in compliance with the License. 
 * You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html
 * See the License for the specific language governing permissions and limitations under the License.
 * 
 * When distributing the software, include this License Header Notice in each file.
 * 
 */

package org.jopendocument.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;

/**
 * Permet de lire un fichier zip.
 * 
 * @author ILM Informatique
 * @see org.jopendocument.util.Zip
 */
public class Unzip extends ZipFile {

    public static void toDir(File zip, File dir) throws IOException {
        Unzip unz = new Unzip(zip);
        unz.unzip(dir);
        unz.close();
    }

    /**
     * Ouvre un fichier zip en lecture.
     * 

* Note : ne pas oublier de fermer. *

* * @param f the ZIP file to be opened for reading * @exception ZipException if a ZIP error has occurred * @exception IOException if an I/O error has occurred * @see ZipFile#close() */ public Unzip(File f) throws ZipException, IOException { super(f); } // *** Lecture /** * Décompresse le zip dans un dossier. Si destDir n'existe pas le crée. * * @param destDir ou mettre le résultat. * @throws ZipException si erreur lors de la décompression. * @throws IOException si erreur de lecture, ou de création de la destination. */ public void unzip(File destDir) throws ZipException, IOException { if (destDir == null) destDir = new File(""); destDir.mkdirs(); final Enumeration en = this.entries(); while (en.hasMoreElements()) { ZipEntry target = (ZipEntry) en.nextElement(); unzip(destDir, target); } } public void unzip(File destDir, String entryName) throws ZipException, IOException { unzipEntry(this, this.getEntry(entryName), destDir); } public void unzip(File destDir, ZipEntry entry) throws ZipException, IOException { unzipEntry(this, entry, destDir); } static private void unzipEntry(ZipFile zf, ZipEntry target, File to) throws ZipException, IOException { File file = new File(to, target.getName()); if (target.isDirectory()) { file.mkdirs(); } else { file.getParentFile().mkdirs(); InputStream is = zf.getInputStream(target); BufferedInputStream bis = new BufferedInputStream(is); FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos); int c; while ((c = bis.read()) != -1) { bos.write((byte) c); } bos.close(); fos.close(); } } /** * Renvoie un flux sans dézipper le fichier. * * @param entryName le nom de l'entrée voulue. * @return le flux correspondant, ou null si non existant. * @throws IOException si erreur lecture. * @see ZipFile#close() */ public InputStream getInputStream(String entryName) throws IOException { final ZipEntry entry = this.getEntry(entryName); if (entry == null) // l'entrée n'existe pas return null; else return this.getInputStream(entry); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy