Exemple20_EntreesSortiesRetourTélécharger Cet exemple montre l'utilisation de certaines méthodes de la classe File :- création de fichier- parcours récursif d'un répertoire- ...etc... Exemple20.java // // Importation du package d'entrée sorties (Input/Output) // qui contient toutes les classes de gestion des fichiers // import java.io.*; public class Exemple20 { public static void main(String[] args) throws IOException { // Ne pas confondre le caractère séparateur de répertoire // et de fichier dans une chaîne qui décrit le chemin d'accès // à un fichier ou à un répertoire : / ou \ // Avec le caractère séparateur des chemin d'accès se trouvant // par exemple dans les variables d'environnement // PATH ou CLASSPATH. // System.out.println("----------------------"); System.out.println("separator : "+File.separator); System.out.println("pathSeparator : "+File.pathSeparator); // On se propose de créer le répertoire "exemple" // qui contient deux sous-répertoires "rep1" et "rep2. // Chacun de ces répertoires contiennent les fichiers: // f1.txt et f2.txt // et rep2 contient le fichier toto.class // System.out.println("----------------------"); File rep1 = new File("exemple"+File.separator +"rep1"); rep1.mkdirs(); File rep2 = new File("exemple"+File.separator +"rep2"); rep2.mkdirs(); File f; f = new File("exemple"+File.separator +"rep1"+File.separator+ "f1.txt"); f.createNewFile(); f = new File("exemple"+File.separator +"rep1"+File.separator+ "f2.txt"); f.createNewFile(); f = new File("exemple"+File.separator +"rep2"+File.separator+ "f1.txt"); f.createNewFile(); f = new File("exemple"+File.separator +"rep2"+File.separator+ "f2.txt"); f.createNewFile(); f = new File("exemple"+File.separator +"rep2"+File.separator+ "toto.class"); f.createNewFile(); // Affichage de l'arborescence créé en utilisant // une méthode récursive // // On obtient : // exemple // rep1 // f1.txt // f2.txt // rep2 // f1.txt // f2.txt // toto.class // afficherRep(new File("exemple"),""); // On affiche encore toute l'arborescence mais on filtre // certains fichiers (ici les .class) // System.out.println("----------------------"); afficherRepFiltre(new File("exemple"),""); // Test de la méthode qui crée un fichier temporaire. // Il est créé dans un répertoire temporaire dépendant // de l'OS // System.out.println("----------------------"); f = File.createTempFile("bidon",".txt"); System.out.println(f.getAbsolutePath()); // C:\Temp\bidon1971705398436420305.txt // Un File en utilisant les "/" en dur // Attention à votre versiond de Java (>=1.5) // System.out.println("----------------------"); f = new File("exemple/rep1/f1.txt"); System.out.println(f.getAbsolutePath()); if (f.exists()) System.out.println("f existe"); // Une autre façon de faire // System.out.println("----------------------"); f = new File(new File("exemple","rep1"),"f1.txt"); System.out.println(f.getAbsolutePath()); if (f.exists()) System.out.println("f existe"); // Affichage de la variable d'environnement PATH // System.out.println("----------------------"); String path = System.getenv("PATH"); for(String s:System.getenv("PATH").split(File.pathSeparator)) System.out.println(s); } // Méthode récursive d'affichage d'un répertoire // static void afficherRep(File file,String marge) { System.out.println(marge+file.getName()); if (file.isDirectory()) { for(File f:file.listFiles()) afficherRep(f,marge+" "); } } // Méthode récursive d'affichage d'un répertoire // et qui filtre les fichier .class (par exemple) // static void afficherRepFiltre(File file,String marge) { System.out.println(marge+file.getName()); if (file.isDirectory()) { for(File f:file.listFiles(new Filtre())) afficherRepFiltre(f,marge+" "); } } } // La classe qui implémente l'interface FileFilter // et qui est utilisée à l'appel de la méthode list // class Filtre implements FileFilter { public boolean accept(File f) { String nom = f.getName(); if (nom.endsWith(".class")) return false; return true; } } compil.bat mkdir bin del /f /s /q bin\*.class javac -d bin *.java pause run.bat cd bin java Exemple20 pause Execution.txt ---------------------- separator : \ pathSeparator : ; ---------------------- exemple rep1 f1.txt f2.txt rep2 f1.txt f2.txt toto.class ---------------------- exemple rep1 f1.txt f2.txt rep2 f1.txt f2.txt ---------------------- C:\DOCUME~1\jlaforgu\LOCALS~1\Temp\bidon5609068846625110065.txt ---------------------- F:\Jacques\CNAM\SITE\SITE_NFA001-002\Exemples\bin\Exemple20\exemple\rep1\f1.txt f existe ---------------------- F:\Jacques\CNAM\SITE\SITE_NFA001-002\Exemples\bin\Exemple20\exemple\rep1\f1.txt f existe ---------------------- C:\PROGRA~1\XEmacs\XEmacs-21.1.9\i386-pc-win32 C:\Program Files\Windows Resource Kits\Tools\ C:\Program Files\PHP\ C:\WINDOWS\system32 C:\WINDOWS C:\WINDOWS\System32\Wbem C:\Program Files\Hummingbird\Connectivity\11.00\Accessories\ C:\Program Files\Fichiers communs\Lenovo C:\Program Files\Windows Imaging\ D:\ProgramFiles\go\bin C:\Program Files\Java\jdk1.6.0_18\bin D:\apache-maven-2.2.1\bin C:\Program Files\Bouml