package br.com.caelum.guj.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; 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; public class FileUtil { @SuppressWarnings("unchecked") public static void extractZipAndCopyFilesToDisk(File zip, String filesPath, String articlePath) { Enumeration entries = null; ZipFile zipFile = null; try { zipFile = new ZipFile(zip); entries = zipFile.entries(); File directory = new File(filesPath + articlePath); File[] listFiles = directory.listFiles(); if (listFiles != null) { for (File file : listFiles) { file.delete(); } } while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); String name = entry.getName(); if (name.lastIndexOf(".gif") != -1 || name.lastIndexOf(".png") != -1 || name.lastIndexOf(".jpg") != -1) { directory.mkdirs(); File file = new File(directory, entry.getName()); file.createNewFile(); copyFileToDisk( zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(file))); } } zipFile.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } public static void prepareAndCopyCodes(File codes, String name, String filesPath, String articlePath) { try { InputStream input = new BufferedInputStream(new FileInputStream( codes)); File directory = new File(filesPath + articlePath); directory.mkdirs(); File file = new File(directory, name); file.createNewFile(); OutputStream output = new BufferedOutputStream( new FileOutputStream(file)); copyFileToDisk(input, output); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void copyFileToDisk(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int lenght; while ((lenght = in.read(buffer)) >= 0) { out.write(buffer, 0, lenght); } in.close(); out.close(); } }