Java tutorial
/* * * Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * / */ package apim.restful.exportimport.utils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ArchiveGenerator { static List<String> fileList; private static String SOURCE_FOLDER; private static final Log log = LogFactory.getLog(ArchiveGenerator.class); ArchiveGenerator() { fileList = new ArrayList<String>(); } /** * Zip it * * @param zipFile output ZIP file location */ public static void zipIt(String zipFile, String sourceDirectory) { File directoryToZip = new File(sourceDirectory); List<File> fileList = new ArrayList<File>(); try { System.out.println("---Getting references to all files in: " + directoryToZip.getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } getAllFiles(directoryToZip, fileList); System.out.println("---Creating zip file"); writeZipFile(directoryToZip, fileList); System.out.println("---Done"); directoryToZip.delete(); if (log.isDebugEnabled()) { log.debug("hf;kljhgff"); } } public static void getAllFiles(File dir, List<File> fileList) { try { File[] files = dir.listFiles(); if (files != null) { for (File file : files) { fileList.add(file); if (file.isDirectory()) { System.out.println("directory:" + file.getCanonicalPath()); getAllFiles(file, fileList); } else { System.out.println(" file:" + file.getCanonicalPath()); } } } } catch (IOException e) { e.printStackTrace(); } } public static void writeZipFile(File directoryToZip, List<File> fileList) { try { FileOutputStream fos = new FileOutputStream(directoryToZip.getPath() + ".zip"); ZipOutputStream zos = new ZipOutputStream(fos); for (File file : fileList) { if (!file.isDirectory()) { // we only zip files, not directories addToZip(directoryToZip, file, zos); } } zos.close(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void addToZip(File directoryToZip, File file, ZipOutputStream zos) throws FileNotFoundException, IOException { FileInputStream fis = new FileInputStream(file); // we want the zipEntry's path to be a relative path that is relative // to the directory being zipped, so chop off the rest of the path String zipFilePath = file.getCanonicalPath().substring(directoryToZip.getCanonicalPath().length() + 1, file.getCanonicalPath().length()); System.out.println("Writing '" + zipFilePath + "' to zip file"); ZipEntry zipEntry = new ZipEntry(zipFilePath); zos.putNextEntry(zipEntry); byte[] bytes = new byte[1024]; int length; while ((length = fis.read(bytes)) >= 0) { zos.write(bytes, 0, length); } zos.closeEntry(); fis.close(); } }