comparison artifacts-common/src/main/java/org/dive4elements/artifacts/common/utils/FileTools.java @ 482:dd412faf7b4d

Framework: Added FileFilter to ZIP file creation.
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 07 May 2013 11:45:47 +0200
parents 415df0fc4fa1
children 584591f8203c
comparison
equal deleted inserted replaced
479:b8067c6f67f6 482:dd412faf7b4d
7 */ 7 */
8 package org.dive4elements.artifacts.common.utils; 8 package org.dive4elements.artifacts.common.utils;
9 9
10 import java.io.BufferedInputStream; 10 import java.io.BufferedInputStream;
11 import java.io.File; 11 import java.io.File;
12 import java.io.FileFilter;
12 import java.io.IOException; 13 import java.io.IOException;
13 import java.io.InputStream; 14 import java.io.InputStream;
14 import java.io.FileInputStream; 15 import java.io.FileInputStream;
15 import java.io.FileOutputStream; 16 import java.io.FileOutputStream;
16 import java.io.OutputStream; 17 import java.io.OutputStream;
311 } 312 }
312 } 313 }
313 314
314 return file.delete(); 315 return file.delete();
315 } 316 }
317 public static final FileFilter ACCEPT_ALL = new FileFilter() {
318 @Override
319 public boolean accept(File file) {
320 return true;
321 }
322 };
323
324 public static void createZipArchive(
325 File file,
326 OutputStream outputStream
327 )
328 throws IOException
329 {
330 createZipArchive(file, outputStream, ACCEPT_ALL);
331 }
316 332
317 /** 333 /**
318 * Put the given file or directory into a zip archive. 334 * Put the given file or directory into a zip archive.
319 * 335 *
320 * @param file The file or directory. 336 * @param file The file or directory.
322 * @throws IOException if an error occured while zip creation or writing to 338 * @throws IOException if an error occured while zip creation or writing to
323 * output stream. 339 * output stream.
324 */ 340 */
325 public static void createZipArchive( 341 public static void createZipArchive(
326 File file, 342 File file,
327 OutputStream outputStream 343 OutputStream outputStream,
344 FileFilter filter
328 ) 345 )
329 throws IOException 346 throws IOException
330 { 347 {
331 ZipOutputStream out = new ZipOutputStream(outputStream); 348 ZipOutputStream out = new ZipOutputStream(outputStream);
332 349
333 if (file.isFile()) { 350 if (filter.accept(file) && file.isFile()) {
334 copyFileToZip("", file, out); 351 copyFileToZip("", file, out);
335 } 352 }
336 else if (file.isDirectory()) { 353 else if (file.isDirectory()) {
337 354
338 Deque<PrefixDir> stack = new ArrayDeque<PrefixDir>(); 355 Deque<PrefixDir> stack = new ArrayDeque<PrefixDir>();
343 360
344 ZipEntry dirEntry = new ZipEntry(pd.prefix); 361 ZipEntry dirEntry = new ZipEntry(pd.prefix);
345 out.putNextEntry(dirEntry); 362 out.putNextEntry(dirEntry);
346 out.closeEntry(); 363 out.closeEntry();
347 364
348 File [] files = pd.dir.listFiles(); 365 File [] files = pd.dir.listFiles(filter);
349 if (files != null) { 366 if (files != null) {
350 for (File sub: files) { 367 for (File sub: files) {
351 if (sub.isDirectory()) { 368 if (sub.isDirectory()) {
352 stack.push(new PrefixDir( 369 stack.push(new PrefixDir(
353 pd.prefix + sub.getName() + "/", 370 pd.prefix + sub.getName() + "/",

http://dive4elements.wald.intevation.org