Index: lutinutil/src/java/org/codelutin/util/FileUtil.java diff -u lutinutil/src/java/org/codelutin/util/FileUtil.java:1.17 lutinutil/src/java/org/codelutin/util/FileUtil.java:1.18 --- lutinutil/src/java/org/codelutin/util/FileUtil.java:1.17 Mon Jan 8 13:18:35 2007 +++ lutinutil/src/java/org/codelutin/util/FileUtil.java Thu Feb 8 11:47:23 2007 @@ -23,9 +23,9 @@ * Created: 22 nov. 2004 * * @author Benjamin Poussin - * @version $Revision: 1.17 $ + * @version $Revision: 1.18 $ * - * Mise a jour: $Date: 2007/01/08 13:18:35 $ + * Mise a jour: $Date: 2007/02/08 11:47:23 $ * par : $Author: bpoussin $ */ @@ -638,11 +638,42 @@ */ static public void copyAndRenameRecursively(File srcDir, File destDir, String renameFrom, String renameTo, String ... includePatterns) throws IOException { - String rootSrc = srcDir.getParent(); + copyAndRenameRecursively(srcDir, destDir, true, renameFrom, renameTo, false, includePatterns); + } + + /** + * Copie recursivement le repertoire source dans le repertoire destination + * + * copyRecursively("/truc/titi", "/var/tmp", "bidulle") donnera le repertoire + * "/var/tmp/bidulle", 'bidulle' remplacant 'titi' + * + * @param srcDir + * @param destDir + * @param includeSrcDir si vrai alors le repertoire source est copie dans le + * repertoire destination et non pas seulement les fichiers qu'il contient + * @param renameFrom pattern to permit rename file before uncompress it + * @param renameTo new name for file if renameFrom is applicable to it + * you can use $1, $2, ... if you have '(' ')' in renameFrom + * @param exclude inverse include pattern interpretation + * @param includePatterns les patterns que doivent resperter les + * fichiers/repertoires pour etre copié. Si vide alors tout est copié + * + * @throws IOException + */ + static public void copyAndRenameRecursively(File srcDir, File destDir, + boolean includeSrcDir, String renameFrom, String renameTo, boolean exclude, + String ... includePatterns) throws IOException { + String rootSrc; + if (includeSrcDir) { + rootSrc = srcDir.getParent(); + } else { + rootSrc = srcDir.getPath(); + } List files = getFilteredElements(srcDir, null, true); log.debug("copyRecursively: " + files); for (File file : files) { - if (copyRecursivelyAccept(file, includePatterns)) { + boolean doCopy = copyRecursivelyAccept(file, includePatterns); + if (xor(exclude, doCopy)) { String path = file.getPath().substring(rootSrc.length()); if (renameFrom != null && renameTo != null) { String tmp = path.replaceAll(renameFrom, renameTo); @@ -664,6 +695,11 @@ } } + static private boolean xor(boolean b, boolean c) { + if (b) return !c; + else return c; + } + /** * @param file * @param includePatterns