IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)



Comment connaître les racines des arborescences de fichiers ?
auteur : Clément Cunin
La classe <javaClass class="java.io.File" show="full"/> fournit la méthode static <javaMethode class="java.io.File" methode="listRoots()" show="full"/>. Sous Windows, le résultat est la liste des lecteurs logiques ( a:/, c:/, d:/ ), sous Unix, le résultat se limite à la seule racine système.

file[] listeRacine = java.io.File.listRoots();

Comment parcourir une arborescence de fichiers ?
auteur : Clément Cunin
Pour obtenir la liste des fichiers d'un répertoire :

<comment>Class : java.io.File</comment>public File [] listFiles ();
Pour connaître le type d'un fichier :

<comment>Class : java.io.File</comment>public boolean isDirectory (); public boolean isFile ();
Exemple :
Cet exemple effectue un parcours récursif d'une arborescence de fichiers et affiche (sur la sortie standard) la liste de tous les fichiers contenus dans le répertoire et ses sous-répertoires.

public static void listeRepertoire ( File repertoire )System.out.println ( repertoire.getAbsolutePath());if ( repertoire.isDirectory ( ) )File[] list = repertoire.listFiles();for ( int i = 0; i < list.length; i++)<comment>Appel récursif sur les sous-répertoires</comment>listeRepertoire( list[i]);
Attention : cet algorithme ne fonctionne pas correctement avec une arborescence cyclique sous Unix !

lien :
lien : Comment connaître les racines des arborescences de fichiers ?
lien : Comment indiquer la position d'un fichier en conservant la portabilité ?

Comment copier/déplacer un fichier ?
auteur : Clément Cunin
Copie de fichier :
L'Api ne fournissant pas de solution clé en main pour la copie de fichier, voila un bout de code qui devrait fonctionner.


<comment_javadoc>copie le fichier source dans le fichier resultatretourne vrai si ca reussit</comment_javadoc>public static boolean copier( File source, File destination )boolean resultat = false;<comment>Declaration des flux</comment>java.io.FileInputStream sourceFile=null;java.io.FileOutputStream destinationFile=null;try<comment>Création du fichier :</comment>destination.createNewFile();<comment>Ouverture des flux</comment>sourceFile = new java.io.FileInputStream(source);destinationFile = new java.io.FileOutputStream(destination);<comment>Lecture par segment de 0.5Mo</comment>byte buffer[]=new byte[512*1024];int nbLecture;while( (nbLecture = sourceFile.read(buffer)) != -1 )destinationFile.write(buffer, 0, nbLecture);<comment>Copie réussie</comment>resultat = true;catch( java.io.FileNotFoundException f )catch( java.io.IOException e )finally<comment>Quoi qu'il arrive, on ferme les flux</comment>trysourceFile.close();catch(Exception e) { }trydestinationFile.close();catch(Exception e) { }return( resultat );
Déplacer un fichier
On n'a vu que le déplacement d'un fichier pouvait être fait grâce à la méthode <javaMethode methode="renameTo(java.io.File)" class="java.io.File" /> de la classe <javaClass class="java.io.File" /> ( voir ici ) Mais cette solution n'est valable que pour des déplacements à l'intérieur d'un disque physique...
On va donc utilisé l'algorithme de copie lorsque le renommage ne suffit pas :

public static boolean deplacer(File source,File destination)if( !destination.existe() )<comment>On essaye avec renameTo</comment>boolean result = source.renameTo(destination);if( !result )<comment>On essaye de copier</comment>result = true;result &= copier(source,destination);result &= source.delete();return(result);else<comment>Si le fichier destination existe, on annule ...</comment>return(false);
lien :

Comment supprimer un fichier ou un répertoire ?
auteur : Clément Cunin
Supprimer un fichier ou un répertoire vide :
La suppression des fichiers et des répertoires vides est effectuée grâce à la méthode <javaMethode methode="delete()" class="java.io.File" /> de la classe <javaClass class="java.io.File" />. Un booléen en résultat indique si la suppression a réussi (cause d'échec : Fichier inexistant; Fichier en lecture seul; Le fichier est ouvert par une application ou par le système; Flux ouvert sur le fichier; etc...).

Supprimer un repertoire non-vide :
L'Api de base ne permet pas de supprimer un repertoire contenant des fichiers, il faut donc supprimer à la main tous les fichiers du repertoire avant !

static public boolean deleteDirectory(File path)boolean resultat = true;if( path.exists() )File[] files = path.listFiles();for(int i=0; i<files.length; i++)if(files[i].isDirectory())resultat &= !deleteDirectory(files[i]);resultat &= files[i].delete();resultat &= path.delete();return( resultat );

Comment renommer/déplacer un fichier ?
auteur : Clément Cunin
La méthode <javaMethode methode="renameTo(java.io.File)" class="java.io.File" /> de la classe <javaClass class="java.io.File" /> permet très facilement de renommer un fichier. De plus, si le répertoire destination est différent du répertoire source, le fichier sera déplacé. (ATTENTION : le déplacement n'est effectué que si la source et la destination sont sur le même disque physique, sinon une copie de fichier est nécessaire)

File source = new File("mon fichier");File destination = new File("mon fichier renommé");source.renameTo(destination);
lien :
lien : Comment indiquer la position d'un fichier en conservant la portabilité ?
lien : Comment copier/déplacer un fichier ?

Comment créer un fichier temporaire ?
auteur : Clément Cunin
Un fichier temporaire est un fichier qui sera créé dans le répertoire temporaire du système et qui sera automatiquement supprimé à la fin de l'application (si la JVM quitte correctement).

File temp = File.createTempFile("nom",".tmp");temp.deleteOnExit();

Comment connaître la date de création d'un fichier ?
Date de création :
Aucune solution n'est disponible pour connaître la date de création d'un fichier. Certains systèmes comme Linux ne fournissant pas cette information, aucun solution portable n'est possible.

Date de la dernière modification :
Là, en revanche, aucun problème, la méthode <javaMethode methode="lastModified()" class="java.io.File"/> de la classe <javaClass class="java.io.File"/> est disponible.

Date dateModification = new Date(monFichier.lastModified());

Comment connaître l'espace libre d'un disque ?
auteur : Clément Cunin
Aucune solution n'est pleinement portable, donc aucune solution pure Java.

JConfig
JConfig est une bibliothèque supplémentaire qui est lié à du code natif disponible pour plusieurs plateformes. Elle permet d'accéder à cette information, ainsi que beaucoup d'autre choses. http://www.tolstoy.com/samizdat/jconfig.html


Comment indiquer la position d'un fichier en conservant la portabilité ?
auteur : Clément Cunin
Les différents systèmes d'exploitation ne gèrent pas les arborescences de fichier de la même façon. Le monde Windows associe les périphériques physiques à des lettres de lecteur, le monde Unix utilise un seul répertoire racine. De plus, les séparateurs de fichier ne sont pas les mêmes (respectivement '\' et '/'). Tout ceci doit être analysé afin d'assurer la portabilité de l'application. Heureusement Java fournit tous les outils pour localiser efficacement les fichiers en gardant toute l'indépendance vis à vis du système d'exploitation.

Le plus important est de ne jamais utiliser directement de séparateur de fichier mais d'utiliser la constante définie en fonction du systeme dans la classe <javaClass class="java.io.File" />.

<comment>Class : java.io.File</comment>public static final char separatorChar;
Si vous désirez exprimer une liste de fichiers, il convient également d'utiliser la constante prévue à cet effet.

<comment>Class : java.io.File</comment>public static final char pathSeparatorChar;
lien : Comment parcourir une arborescence de fichiers ?


Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.