Class ZipUtil

java.lang.Object
org.nuiton.util.ZipUtil

public class ZipUtil
extends java.lang.Object
Opérations sur des fichiers Zip. Compression et décompression avec ou sans filtres, scan des fichiers créés ou écrasés lors de la décompression... Created: 24 août 2006 10:13:35
Author:
Benjamin Poussin - poussin@codelutin.com
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected static java.io.FileFilter ALL_FILE_FILTER
    Accept all file pattern.
  • Constructor Summary

    Constructors 
    Constructor Description
    ZipUtil()  
  • Method Summary

    Modifier and Type Method Description
    static void compress​(java.io.File zipFile, java.io.File fileOrDirectory)
    If fileOrDirectory is directory Compress recursively all file in this directory, else if is just file compress one file.
    static void compress​(java.io.File zipFile, java.io.File fileOrDirectory, java.io.FileFilter filter)
    If fileOrDirectory is directory Compress recursively all file in this directory, else if is just file compress one file.
    static void compress​(java.io.File zipFile, java.io.File fileOrDirectory, java.io.FileFilter filter, boolean createMD5)
    If fileOrDirectory is directory Compress recursively all file in this directory, else if is just file compress one file.
    static void compressFiles​(java.io.File zipFile, java.io.File root, java.util.Collection<java.io.File> includes)
    Compress 'includes' files in zipFile.
    static void compressFiles​(java.io.File zipFile, java.io.File root, java.util.Collection<java.io.File> includes, boolean createMD5)
    Compress 'includes' files in zipFile.
    protected static java.lang.String convertToLocalEntryName​(java.lang.String txt)  
    static boolean isZipFile​(java.io.File file)
    Tests if the given file is a zip file.
    static void scan​(java.io.File zipFile, java.io.File targetDir, java.util.List<java.lang.String> newFiles, java.util.List<java.lang.String> existingFiles, java.io.FileFilter excludeFilter, java.lang.String renameFrom, java.lang.String renameTo)
    Scan a zipFile, and fill two lists of relative paths corresponding of zip entries.
    static java.util.List<java.lang.String>[] scanAndExplodeZip​(java.io.File source, java.io.File root, java.io.FileFilter excludeFilter)  
    static java.lang.String uncompress​(java.io.File file, java.io.File targetDir)
    Uncompress zipped file in targetDir.
    static java.lang.String uncompress​(java.io.File file, java.io.File targetDir, java.util.List<java.lang.String> toTreate, java.lang.String renameFrom, java.lang.String renameTo)
    uncompress zipped file in targetDir.
    static java.lang.String uncompress​(java.io.InputStream stream, java.io.File targetDir)
    Uncompress zipped stream in targetDir.
    static java.lang.String uncompressAndRename​(java.io.File file, java.io.File targetDir, java.lang.String renameFrom, java.lang.String renameTo)
    Uncompress zipped file in targetDir, and rename uncompressed file if necessary.
    static java.lang.String uncompressAndRename​(java.io.InputStream stream, java.io.File targetDir, java.lang.String renameFrom, java.lang.String renameTo)
    Uncompress zipped stream in targetDir, and rename uncompressed file if necessary.
    static void uncompressFiltred​(java.io.File file, java.io.File targetDir, java.lang.String... excludes)
    Unzip compressed archive and keep non excluded patterns.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • ALL_FILE_FILTER

      protected static java.io.FileFilter ALL_FILE_FILTER
      Accept all file pattern.
  • Constructor Details

  • Method Details

    • uncompress

      public static java.lang.String uncompress​(java.io.File file, java.io.File targetDir) throws java.io.IOException
      Uncompress zipped file in targetDir.
      Parameters:
      file - the zip source file
      targetDir - the destination directory
      Returns:
      return last entry name
      Throws:
      java.io.IOException - if any problem while uncompressing
    • uncompress

      public static java.lang.String uncompress​(java.io.InputStream stream, java.io.File targetDir) throws java.io.IOException
      Uncompress zipped stream in targetDir.
      Parameters:
      stream - the zip source stream, stream is closed before return
      targetDir - the destination directory
      Returns:
      return last entry name
      Throws:
      java.io.IOException - if any problem while uncompressing
      Since:
      2.6.6
    • uncompressAndRename

      public static java.lang.String uncompressAndRename​(java.io.File file, java.io.File targetDir, java.lang.String renameFrom, java.lang.String renameTo) throws java.io.IOException
      Uncompress zipped file in targetDir, and rename uncompressed file if necessary. If renameFrom or renameTo is null no renaming is done file in zip use / to separate directory and not begin with / each directory ended with /
      Parameters:
      file - the zip source file
      targetDir - the destination directory
      renameFrom - pattern to permit rename file before uncompress it
      renameTo - new name for file if renameFrom is applicable to it you can use $1, $2, ... if you have '(' ')' in renameFrom
      Returns:
      return last entry name
      Throws:
      java.io.IOException - if any problem while uncompressing
    • uncompressAndRename

      public static java.lang.String uncompressAndRename​(java.io.InputStream stream, java.io.File targetDir, java.lang.String renameFrom, java.lang.String renameTo) throws java.io.IOException
      Uncompress zipped stream in targetDir, and rename uncompressed file if necessary. If renameFrom or renameTo is null no renaming is done file in zip use / to separate directory and not begin with / each directory ended with /
      Parameters:
      stream - the zip source stream, stream is closed before return
      targetDir - the destination directory
      renameFrom - pattern to permit rename file before uncompress it
      renameTo - new name for file if renameFrom is applicable to it you can use $1, $2, ... if you have '(' ')' in renameFrom
      Returns:
      return last entry name
      Throws:
      java.io.IOException - if any problem while uncompressing
      Since:
      2.6.6
    • compressFiles

      public static void compressFiles​(java.io.File zipFile, java.io.File root, java.util.Collection<java.io.File> includes) throws java.io.IOException
      Compress 'includes' files in zipFile. If file in includes is directory only the directory is put in zipFile, not the file contained in directory
      Parameters:
      zipFile - the destination zip file
      root - for all file in includes that is in this directory, then we remove this directory in zip entry name (aka -C for tar), can be null;
      includes - the files to include in zip
      Throws:
      java.io.IOException - if any problem while compressing
    • compressFiles

      public static void compressFiles​(java.io.File zipFile, java.io.File root, java.util.Collection<java.io.File> includes, boolean createMD5) throws java.io.IOException
      Compress 'includes' files in zipFile. If file in includes is directory only the directory is put in zipFile, not the file contained in directory
      Parameters:
      zipFile - the destination zip file
      root - for all file in includes that is in this directory, then we remove this directory in zip entry name (aka -C for tar), can be null;
      includes - the files to include in zip
      createMD5 - also create a MD5 file (zip name + .md5). MD5 file is created after zip.
      Throws:
      java.io.IOException - if any problem while compressing
    • compress

      public static void compress​(java.io.File zipFile, java.io.File fileOrDirectory) throws java.io.IOException
      If fileOrDirectory is directory Compress recursively all file in this directory, else if is just file compress one file. Entry result name in zip start at fileOrDirectory. example: if we compress /etc/apache, entry will be apache/http.conf, ...
      Parameters:
      zipFile - the target zip file
      fileOrDirectory - the file or directory to compress
      Throws:
      java.io.IOException - if any problem while compressing
    • compress

      public static void compress​(java.io.File zipFile, java.io.File fileOrDirectory, java.io.FileFilter filter) throws java.io.IOException
      If fileOrDirectory is directory Compress recursively all file in this directory, else if is just file compress one file. Entry result name in zip start at fileOrDirectory. example: if we compress /etc/apache, entry will be apache/http.conf, ...
      Parameters:
      zipFile - the target zip file
      fileOrDirectory - the file or directory to compress
      filter - used to accept file, if null, all file is accepted
      Throws:
      java.io.IOException - if any problem while compressing
    • compress

      public static void compress​(java.io.File zipFile, java.io.File fileOrDirectory, java.io.FileFilter filter, boolean createMD5) throws java.io.IOException
      If fileOrDirectory is directory Compress recursively all file in this directory, else if is just file compress one file. Entry result name in zip start at fileOrDirectory. example: if we compress /etc/apache, entry will be apache/http.conf, ...
      Parameters:
      zipFile - the target zip file
      fileOrDirectory - the file or directory to compress
      filter - used to accept file, if null, all file is accepted
      createMD5 - also create a MD5 file (zip name + .md5). MD5 file is created after zip.
      Throws:
      java.io.IOException - if any problem while compressing
    • scan

      public static void scan​(java.io.File zipFile, java.io.File targetDir, java.util.List<java.lang.String> newFiles, java.util.List<java.lang.String> existingFiles, java.io.FileFilter excludeFilter, java.lang.String renameFrom, java.lang.String renameTo) throws java.io.IOException
      Scan a zipFile, and fill two lists of relative paths corresponding of zip entries. First list contains all entries to be added while a uncompress operation on the destination directory targetDir. Second list contains all entries to be overwritten while a uncompress operation on the destination directory targetDir. If targetDir is null we don't fill existingFiles list.
      Parameters:
      zipFile - location of the zip to scanZip
      targetDir - location of destination for a uncompress operation. If null we don't test to find overwritten files.
      newFiles - list of files to be added while a uncompress
      existingFiles - list of files to be overwritten while a uncompress if the targetDir, (only use if targetDir is not null)
      excludeFilter - used to exclude some files
      renameFrom - uncompressAndRename(File, File, String, String)
      renameTo - uncompressAndRename(File, File, String, String)
      Throws:
      java.io.IOException - if any exception while dealing with zipfile
    • scanAndExplodeZip

      public static java.util.List<java.lang.String>[] scanAndExplodeZip​(java.io.File source, java.io.File root, java.io.FileFilter excludeFilter) throws java.io.IOException
      Throws:
      java.io.IOException
    • uncompress

      public static java.lang.String uncompress​(java.io.File file, java.io.File targetDir, java.util.List<java.lang.String> toTreate, java.lang.String renameFrom, java.lang.String renameTo) throws java.io.IOException
      uncompress zipped file in targetDir. If toTreate if not null nor empty, we use it to filter entries to uncompress : it contains a list of relative local path of files to uncompress. Otherwise just delegate to uncompress(File, File).
      Parameters:
      file - location of zip file
      targetDir - destination directory
      toTreate - list of relative local path of entries to treate
      renameFrom - uncompressAndRename(File, File, String, String)
      renameTo - uncompressAndRename(File, File, String, String)
      Returns:
      return last entry name
      Throws:
      java.io.IOException - if nay exception while operation
    • uncompressFiltred

      public static void uncompressFiltred​(java.io.File file, java.io.File targetDir, java.lang.String... excludes) throws java.io.IOException
      Unzip compressed archive and keep non excluded patterns.
      Parameters:
      file - archive file
      targetDir - destination file
      excludes - excludes pattern (pattern must match complete entry name including root folder)
      Throws:
      java.io.IOException - FIXME
    • isZipFile

      public static boolean isZipFile​(java.io.File file)
      Tests if the given file is a zip file.
      Parameters:
      file - the file to test
      Returns:
      true if the file is a valid zip file, false otherwise.
      Since:
      2.4.9
    • convertToLocalEntryName

      protected static java.lang.String convertToLocalEntryName​(java.lang.String txt)