Author: tchemit Date: 2010-09-23 21:31:22 +0200 (Thu, 23 Sep 2010) New Revision: 1919 Url: http://nuiton.org/repositories/revision/nuiton-utils/1919 Log: Evolution #887: Add more methods in FileUtil (to work directly on file name without having the file) Fix javadoc Begin of improve io closure Modified: trunk/src/main/java/org/nuiton/util/FileUtil.java Modified: trunk/src/main/java/org/nuiton/util/FileUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/util/FileUtil.java 2010-09-09 09:30:53 UTC (rev 1918) +++ trunk/src/main/java/org/nuiton/util/FileUtil.java 2010-09-23 19:31:22 UTC (rev 1919) @@ -90,8 +90,8 @@ } static public class PatternChooserFilter extends javax.swing.filechooser.FileFilter { - protected String pattern = null; - protected String description = null; + protected String pattern; + protected String description; public PatternChooserFilter(String pattern, String description) { this.pattern = pattern; @@ -118,7 +118,7 @@ * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données * par deux, le pattern du filtre + la description du filtre * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé - * @see #getFile(javax.swing.filechooser.FileFilter[]) + * @see #getFile(javax.swing.filechooser.FileFilter...) */ static public File getFile(String... patternOrDescriptionFilters) { File result; @@ -146,7 +146,7 @@ * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données * par deux, le pattern du filtre + la description du filtre * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé - * @see #getFile(javax.swing.filechooser.FileFilter[]) + * @see #getFile(javax.swing.filechooser.FileFilter...) */ static public File getFile(Component parent, String... patternOrDescriptionFilters) { File result; @@ -164,7 +164,7 @@ * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données * par deux, le pattern du filtre + la description du filtre * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé - * @see #getFile(javax.swing.filechooser.FileFilter[]) + * @see #getFile(javax.swing.filechooser.FileFilter...) */ static public File getFile(String title, String approvalText, Component parent, String... patternOrDescriptionFilters) { @@ -362,8 +362,11 @@ */ static public File byteToFile(byte[] bytes, File file) throws IOException { OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); - out.write(bytes); - out.close(); + try { + out.write(bytes); + } finally { + out.close(); + } return file; } @@ -574,7 +577,22 @@ * @return le nom du fichier sans le suffixe si trouvé. */ static public String basename(File file, String... suffixes) { - String result = file.getName(); + String result = basename(file.getName(), suffixes); + return result; + } + + /** + * Equivalent de la methode basename unix. + * basename("/tmp/toto.xml", ".xml") -> "toto" + * + * @param name le nom du fichier dont on souhaite le nom sans le chemin + * @param suffixes si present represente le suffixe a eliminer du fichier + * s'il est trouvé + * @return le nom du fichier sans le suffixe si trouvé. + * @since 1.4.2 + */ + static public String basename(String name, String... suffixes) { + String result = name; for (String suffixe : suffixes) { if (result.endsWith(suffixe)) { result = result.substring(0, result.length() - suffixe.length()); @@ -594,9 +612,24 @@ * l'extension ne contient pas le chaine de delimitation */ static public String extension(File file, String... extchars) { - String result = ""; String name = file.getName(); + String result = extension(name, extchars); + return result; + } + /** + * Permet de récupérer l'extension d'un nom de fichier + * + * @param name le nom du fichier dont on souhaite l'extension + * @param extchars la liste des caracteres pouvant former l'extension + * dans l'ordre de preference. Si vide on utilise ".". + * @return l'extension ou la chaine vide si le fichier n'a pas d'extension + * l'extension ne contient pas le chaine de delimitation + * @since 1.4.2 + */ + static public String extension(String name, String... extchars) { + String result = ""; + if (extchars.length == 0) { extchars = new String[]{"."}; }