[Lutinutil-commits] r1333 - in lutinutil/trunk: . src/main/java/org/codelutin/util src/main/resources/i18n
Author: tchemit Date: 2009-02-09 13:44:28 +0000 (Mon, 09 Feb 2009) New Revision: 1333 Modified: lutinutil/trunk/changelog.txt lutinutil/trunk/src/main/java/org/codelutin/util/FileUtil.java lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties Log: add inputStreamToFile method in FileUtil + javadoc on this class Modified: lutinutil/trunk/changelog.txt =================================================================== --- lutinutil/trunk/changelog.txt 2009-02-08 19:38:54 UTC (rev 1332) +++ lutinutil/trunk/changelog.txt 2009-02-09 13:44:28 UTC (rev 1333) @@ -1,4 +1,5 @@ ver 1.0.3 ??? 200901?? + * 20090209 [chemit] add inputStreamToFile method in FileUtil + javadoc on this class * 20090208 [chemit] add PropertyChangedSupport in ApplicationConfig * 20090203 [chemit] fix StringUtil failed tests since to locale. * 20090126 [chemit] i18n Resource class Modified: lutinutil/trunk/src/main/java/org/codelutin/util/FileUtil.java =================================================================== --- lutinutil/trunk/src/main/java/org/codelutin/util/FileUtil.java 2009-02-08 19:38:54 UTC (rev 1332) +++ lutinutil/trunk/src/main/java/org/codelutin/util/FileUtil.java 2009-02-09 13:44:28 UTC (rev 1333) @@ -97,7 +97,7 @@ * * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données * par deux, le pattern du filtre + la description du filtre - * @return + * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé * @see #getFile(javax.swing.filechooser.FileFilter[]) */ static public File getFile(String... patternOrDescriptionFilters) { @@ -120,7 +120,7 @@ * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne null. * * @param filters les filtres a ajouter - * @return + * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé */ static public File getFile(javax.swing.filechooser.FileFilter... filters) { try { @@ -154,7 +154,7 @@ /** * @param title le nom de la boite de dialogue - * @param approvalText + * @param approvalText le texte de l'action d'acceptation du répertoire dans le file chooser * @return le nom du repertoire entre dans la boite de dialogue. * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne * null. @@ -195,9 +195,9 @@ /** * Permet de convertir un fichier en un tableau de byte * - * @param file - * @return - * @throws IOException + * @param file le fichier source à convertire + * @return le contenu du fichier sous la forme d'un tableau de bytes. + * @throws IOException if any io pb */ static public byte[] fileToByte(File file) throws IOException { InputStream in = new BufferedInputStream(new FileInputStream(file)); @@ -213,12 +213,40 @@ } /** + * Permet de recopier un stream dans un fichier + * + * @param src the incoming stream to grab + * @param dst the dst file + * @return the file filled by incoming input stream + * @throws IOException if any io pb + * @throws NullPointerException if src or dst parameter is null + */ + static public File inputStreamToFile(InputStream src, File dst) throws IOException, NullPointerException { + if (src == null) { + throw new NullPointerException("parameter 'src' can not be null"); + } + if (dst == null) { + throw new NullPointerException("parameter 'dst' can not be null"); + } + + ByteArrayOutputStream result = new ByteArrayOutputStream(); + BufferedOutputStream tmp = new BufferedOutputStream(result); + for (int b = src.read(); b != -1; b = src.read()) { + tmp.write(b); + } + src.close(); + tmp.close(); + byteToFile(result.toByteArray(), dst); + return dst; + } + + /** * Permet de convertir des bytes en fichier, le fichier sera automatiquement * supprimé a la fin de la JVM. * - * @param bytes + * @param bytes the array of bytes to copy in dstination file * @return le fichier temporaire contenant les bytes - * @throws IOException + * @throws IOException if any io pb */ static public File byteToFile(byte[] bytes) throws IOException { File file = File.createTempFile("FileUtil-byteToFile", ".tmp"); @@ -229,10 +257,10 @@ /** * Permet de convertir des bytes en fichier * - * @param bytes + * @param bytes the array of bytes to put in the given destination file * @param file le fichier dans lequel il faut ecrire les bytes * @return le fichier passé en parametre - * @throws IOException + * @throws IOException if any io pb */ static public File byteToFile(byte[] bytes, File file) throws IOException { OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); @@ -244,9 +272,9 @@ /** * Retourne un Reader utilisant l'encoding par defaut {@link #ENCODING} * - * @param file - * @return - * @throws IOException + * @param file the given reader + * @return the reader on the given file + * @throws IOException if any io pb */ static public BufferedReader getReader(File file) throws IOException { return getReader(file, ENCODING); @@ -256,10 +284,10 @@ * Retourne un reader utilisant l'encoding choisi et placé dans un * BufferedReader * - * @param file + * @param file the given file * @param encoding (ISO-8859-1, UTF-8, ...) - * @return - * @throws IOException + * @return the buffered reader in the given encoding + * @throws IOException if any io pb */ static public BufferedReader getReader(File file, String encoding) throws IOException { FileInputStream inf = new FileInputStream(file); @@ -272,9 +300,9 @@ /** * Retourne un Writer utilisant l'encoding par defaut {@link #ENCODING} * - * @param file - * @return - * @throws IOException + * @param file the given file + * @return the writer on the given file + * @throws IOException if any io pb */ static public BufferedWriter getWriter(File file) throws IOException { return getWriter(file, ENCODING); @@ -284,10 +312,10 @@ * Retourne un writer utilisant l'encoding choisi et placé dans un * BufferedWriter * - * @param file + * @param file the given file * @param encoding (ISO-8859-1, UTF-8, ...) - * @return - * @throws IOException + * @return the buffered writer on the given file with given encoding + * @throws IOException if any io pb */ static public BufferedWriter getWriter(File file, String encoding) throws IOException { FileOutputStream outf = new FileOutputStream(file); @@ -297,10 +325,7 @@ return result; } - public static void main(String[] args) { - } - /** * Permet de creer un nouveu repertoire temporaire, l'effacement du * répertoire est a la charge de l'appelant @@ -310,7 +335,7 @@ * @param tmpdir le répertoire temporaire ou il faut creer le repertoire * si null on utilise java.io.tmpdir * @return le fichier pointant sur le nouveau repertoire - * @throws java.io.IOException + * @throws java.io.IOException if any io pb */ static public File createTempDirectory(String prefix, String suffix, File tmpdir) throws IOException { if (tmpdir == null) { @@ -330,10 +355,10 @@ * Permet de creer un nouveu repertoire temporaire, l'effacement du * répertoire est a la charge de l'appelant * - * @param prefix - * @param suffix - * @return - * @throws java.io.IOException + * @param prefix le prefix du repertoire a creer + * @param suffix le suffix du repertoire a creer. + * @return the temprary created file + * @throws java.io.IOException if any io pb */ static public File createTempDirectory(String prefix, String suffix) throws IOException { return createTempDirectory(prefix, suffix, null); @@ -342,8 +367,8 @@ /** * Regarde si le fichier f1 est plus recent que le fichier f2 * - * @param f1 - * @param f2 + * @param f1 the first file + * @param f2 the second file * @return vrai si f1 est plus recent que f2 */ static public boolean isNewer(File f1, File f2) { @@ -356,8 +381,8 @@ * chaine de carateres * * @param file le fichier a lire - * @return - * @throws IOException + * @return le contenu du fichier + * @throws IOException if any io pb */ static public String readAsString(File file) throws IOException { StringBuffer result = new StringBuffer(); @@ -380,6 +405,8 @@ * @throws IOException if any pb while writing */ static public void writeString(File file, String content) throws IOException { + //fixme on doit tester le retour de la méthode, car il se peut que le répertoire + // ne puisse être crée. file.getParentFile().mkdirs(); BufferedWriter out = getWriter(file); out.write(content); @@ -395,6 +422,8 @@ * @throws IOException if any pb while writing */ static public void writeString(File file, String content, String encoding) throws IOException { + //fixme on doit tester le retour de la méthode, car il se peut que le répertoire + // ne puisse être crée. file.getParentFile().mkdirs(); BufferedWriter out = getWriter(file, encoding); out.write(content); @@ -407,7 +436,7 @@ * * @param content le contenu du fichier temporaire * @return le fichier qui contient content - * @throws IOException + * @throws IOException if any io pb */ static public File getTempFile(String content) throws IOException { return getTempFile(content, ""); @@ -420,7 +449,7 @@ * @param content le contenu du fichier temporaire * @param fileSuffix l'extension du fichier créé * @return le fichier qui contient content - * @throws IOException + * @throws IOException if any io pb */ static public File getTempFile(String content, String fileSuffix) throws IOException { File result = File.createTempFile("tmp-" + FileUtil.class.getName(), fileSuffix); @@ -483,7 +512,7 @@ * Retourne tous les sous répertoires du répertoire passé en argument. * * @param directory un répertoire - * @return une liste d'objet {@link java.io.File} de répertoires et ceci + * @return une liste d'objet {@link File} de répertoires et ceci * recursivement à partir de directory, si directory * n'est pas un répertoire la liste est vide. */ @@ -500,7 +529,7 @@ * Retourne tous les fichiers du répertoire passé en argument. * * @param directory un répertoire - * @return une liste d'objet {@link java.io.File} des fichiers et ceci + * @return une liste d'objet {@link File} des fichiers et ceci * recursivement à partir de directory, si directory n'est pas un * répertoire la liste est vide */ @@ -520,8 +549,8 @@ * @param directory le répertoire à partir duquel il faut faire la recherche * @param pattern le pattern que doit respecter le fichier pour être dans la * liste résultante - * @param recursively - * @return une liste d'objet {@link java.io.File} qui ont s'attisfait le + * @param recursively flag pour indiquer si on doit descendre dans les sous répertoires + * @return une liste d'objet {@link File} qui ont s'attisfait le * pattern. */ public static List<File> find(File directory, final String pattern, boolean recursively) { @@ -545,8 +574,8 @@ * @param directory repertoire à partir duquel il faut faire la recherche * @param ff le filtre à appliquer pour savoir si le fichier parcouru doit * être conservé dans les résultats, ou null pour tous les fichiers - * @param recursively - * @return une liste d'objet {@link java.io.File}, qui s'attisfont le filtre + * @param recursively un flag pour indiquer si on doit descendre dans les répertoires + * @return une liste d'objet {@link File}, qui s'attisfont le filtre */ public static List<File> getFilteredElements(File directory, FileFilter ff, boolean recursively) { ArrayList<File> result = new ArrayList<File>(); @@ -572,7 +601,7 @@ /** * Supprime recursivement tout le contenu d'un répertoire. * - * @param directory + * @param directory le chemin du répertoire à supprimer * @return vrai si tout se passe bien, false si la suppression d'un élement * se passe mal */ @@ -583,7 +612,7 @@ /** * Supprime recursivement tout le contenu d'un répertoire. * - * @param directory + * @param directory le répertoire à supprimer * @return vrai si tout se passe bien, false si la suppression d'un élement * se passe mal */ @@ -610,8 +639,8 @@ boolean result = fileAction.doAction(f); if (f.isDirectory()) { File list[] = f.listFiles(); - for (int i = 0; i < list.length; i++) { - result = result && walkAfter(list[i], fileAction); + for (File aList : list) { + result = result && walkAfter(aList, fileAction); } } return result; @@ -632,8 +661,8 @@ boolean result = true; if (f.isDirectory()) { File list[] = f.listFiles(); - for (int i = 0; i < list.length; i++) { - result = result && walkBefore(list[i], fileAction); + for (File aList : list) { + result = result && walkBefore(aList, fileAction); } } return result && fileAction.doAction(f); @@ -647,6 +676,8 @@ * @throws IOException Erreur de copie */ public static void copy(File source, File target) throws IOException { + //fixme on doit tester le retour de la méthode, car il se peut que le répertoire + // ne puisse être copié. target.getParentFile().mkdirs(); FileChannel sourceChannel = new FileInputStream(source).getChannel(); FileChannel targetChannel = new FileOutputStream(target).getChannel(); @@ -674,11 +705,11 @@ * copyRecursively("/truc/titi", "/var/tmp") donnera le repertoire * "/var/tmp/titi" * - * @param srcDir - * @param destDir + * @param srcDir le répertoire source à copier + * @param destDir le répertoire destination où copier * @param includePatterns les patterns que doivent resperter les * fichiers/repertoires pour etre copié. Si vide alors tout est copié - * @throws IOException + * @throws IOException if any io pb */ static public void copyRecursively(File srcDir, File destDir, String... includePatterns) throws IOException { copyAndRenameRecursively(srcDir, destDir, null, null, includePatterns); @@ -690,14 +721,14 @@ * copyRecursively("/truc/titi", "/var/tmp", "bidulle") donnera le repertoire * "/var/tmp/bidulle", 'bidulle' remplacant 'titi' * - * @param srcDir - * @param destDir + * @param srcDir le répertoire source à copier + * @param destDir le répertoire destination où copier * @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 includePatterns les patterns que doivent resperter les * fichiers/repertoires pour etre copié. Si vide alors tout est copié - * @throws IOException + * @throws IOException if any io pb */ static public void copyAndRenameRecursively(File srcDir, File destDir, String renameFrom, String renameTo, String... includePatterns) throws IOException { @@ -710,8 +741,8 @@ * copyRecursively("/truc/titi", "/var/tmp", "bidulle") donnera le repertoire * "/var/tmp/bidulle", 'bidulle' remplacant 'titi' * - * @param srcDir - * @param destDir + * @param srcDir le répertoire source à copier + * @param destDir le répertoire destination où copier * @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 @@ -720,7 +751,7 @@ * @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 + * @throws IOException if any io pb */ static public void copyAndRenameRecursively(File srcDir, File destDir, boolean includeSrcDir, String renameFrom, String renameTo, boolean exclude, @@ -748,6 +779,8 @@ File destFile = new File(destDir, path); if (file.isDirectory()) { log.debug("create directory: " + destFile); + //fixme on doit tester le retour de la méthode, car il se peut que le répertoire + // ne puisse être copié. destFile.mkdirs(); } else { log.debug("copy " + path + " to " + destFile); @@ -757,15 +790,24 @@ } } + /** + * @param b first operande + * @param c seconde operande + * @return b^c + * @deprecated Y'a un opérateur java qui fait ca très bien :) il s'agit de ^ + */ static private boolean xor(boolean b, boolean c) { - if (b) return !c; - else return c; + if (b) { + return !c; + } else { + return c; + } } /** - * @param file - * @param includePatterns - * @return + * @param file le fichier à tester. + * @param includePatterns les patterns pour accepeter le fichier depuis son nom + * @return <code>true</code> si le fichier est accepté, <code>false> autrement. */ private static boolean copyRecursivelyAccept(File file, String[] includePatterns) { boolean result = includePatterns.length == 0; Modified: lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties =================================================================== --- lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties 2009-02-08 19:38:54 UTC (rev 1332) +++ lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties 2009-02-09 13:44:28 UTC (rev 1333) @@ -1,30 +1,30 @@ hello\ you\ \!= -lutinuitl.error.convert.file.to.url=Le fichier '%1$s' n'a pas pu \u00EAtre converti en URL pour la raison suivante \: %2$S -lutinuitl.error.resource.not.found="La resource '%1$s' n'a pas \u00E9t\u00E9 trouv\u00E9e -lutinutil.debug.objectutil.create=Essaye de cr\u00E9er %s avec %s -lutinutil.debug.objectutil.instantiate=Ne peut pas instancier %s avec les param\u00EAtres %s +lutinuitl.error.convert.file.to.url=Le fichier '%1$s' n'a pas pu \u00eatre converti en URL pour la raison suivante \: %2$S +lutinuitl.error.resource.not.found=La resource '%1$s' n'a pas \u00e9t\u00e9 trouv\u00e9e +lutinutil.debug.objectutil.create=Essaye de cr\u00e9er %s avec %s +lutinutil.debug.objectutil.instantiate=Ne peut pas instancier %s avec les param\u00eatres %s lutinutil.debug.objectutil.invoke=Invocation de %s avec %s lutinutil.error.add.url.in.classloader=Can't add url in classloader %1$s for reason %2$s lutinutil.error.applicationconfig.save=Impossible de sauvegarder le fichier de configuration dans %s -lutinutil.error.convertor.noValue=Aucune valeur \u00E0 convertir pour le convertisseur %s -lutinutil.error.get.url.from.zip=Erreur lors de la lecture du fichier compress\u00E9 %1$s \: %2$s -lutinutil.error.i18n.unformated.message=Le message suivant n''a pas pu \u00EAtre format\u00E9 \: '%s' avec les arguments %s -lutinutil.error.i18n.unfound.country=n'a pas pu trouver le pays \u00E0 partir de '%s', utilise le pays par d\u00E9faut '%s' -lutinutil.error.i18n.unfound.language=n'a pas pu trouver la langue \u00E0 partir de '%s', utilise la langue par d\u00E9faut '%s' -lutinutil.error.i18n.untranslated.message=Le message suivant n'a pas pu \u00EAtre traduit \: '%s' -lutinutil.error.no.convertor=Aucun convertisseur trouv\u00E9 pour le type %2$s et l''objet '%1$s' +lutinutil.error.convertor.noValue=Aucune valeur \u00e0 convertir pour le convertisseur %s +lutinutil.error.get.url.from.zip=Erreur lors de la lecture du fichier compress\u00e9 %1$s \: %2$s +lutinutil.error.i18n.unformated.message=Le message suivant n''a pas pu \u00eatre format\u00e9 \: '%s' avec les arguments %s +lutinutil.error.i18n.unfound.country=n'a pas pu trouver le pays \u00e0 partir de '%s', utilise le pays par d\u00e9faut '%s' +lutinutil.error.i18n.unfound.language=n'a pas pu trouver la langue \u00e0 partir de '%s', utilise la langue par d\u00e9faut '%s' +lutinutil.error.i18n.untranslated.message=Le message suivant n'a pas pu \u00eatre traduit \: '%s' +lutinutil.error.no.convertor=Aucun convertisseur trouv\u00e9 pour le type %2$s et l''objet '%1$s' lutinutil.error.resource.not.found= -lutinutil.error.unfound.month=n'a pas pu trouv\u00E9 le mois \u00E0 partir de '%s', utilise le mois par d\u00E9faut '%s' +lutinutil.error.unfound.month=n'a pas pu trouv\u00e9 le mois \u00e0 partir de '%s', utilise le mois par d\u00e9faut '%s' lutinutil.error.unknown.url.type=could not treate unknown type of url %1$s -lutinutil.error.url.convertor=Un probl\u00E8me est apparu lors de la convertion en url de '%s' avec le convertisseur %s pour la raison suivante \: %s -lutinutil.fileCompletion.cancel=.. pour annuler ou pour revenir au repertoire pr\u00E9c\u00E9dent -lutinutil.fileCompletion.enter=Entrer pour afficher la liste des fichiers, ou pour compl\u00E9ter le chemin +lutinutil.error.url.convertor=Un probl\u00e8me est apparu lors de la convertion en url de '%s' avec le convertisseur %s pour la raison suivante \: %s +lutinutil.fileCompletion.cancel=.. pour annuler ou pour revenir au repertoire pr\u00e9c\u00e9dent +lutinutil.fileCompletion.enter=Entrer pour afficher la liste des fichiers, ou pour compl\u00e9ter le chemin lutinutil.fileCompletion.exit=Saisir "\!q" pour quitter lutinutil.fileCompletion.save=Saisir "\!s" a la fin du nom de fichier pour l'enregistrer lutinutil.month.april=avril -lutinutil.month.august=ao\u00FBt -lutinutil.month.december=d\u00E9cembre -lutinutil.month.february=f\u00E9vrier +lutinutil.month.august=ao\u00fbt +lutinutil.month.december=d\u00e9cembre +lutinutil.month.february=f\u00e9vrier lutinutil.month.january=janvier lutinutil.month.july=juillet lutinutil.month.june=juin
participants (1)
-
tchemit@users.labs.libre-entreprise.org