Prenant l'exemple du répertoire D: / A, en supposant que la structure dans le répertoire D: / A est la suivante:
d: / a | --a.sql | --back.log | --b | | --e | | ---1.txt | | --2.txt | | --3.txt | `--f | | --4.txt | | --5tt | `--6.txt | --c | | --e | | --ACE1.TXT | | --acte2.txt | | --ACE3.TXT | `--f | | --4.txt | | --5tt | `--6.txt` - d | --a.java | --abc (1) .txt | --abc (2) .txt | --abc (3) .txt | --b.java` --c.java
4.1 Exemple 1: Liste des fichiers dans l'ensemble du répertoire (récursif)
Idées:
1.Transfert le répertoire d: / a.
2. Chaque fois que vous traversez un répertoire en d: / a, itérez sur ce sous-répertoire. Par conséquent, il est nécessaire de déterminer si chaque élément traversé est un répertoire.
Voici quelques-uns des codes du code normal au code récursif:
File dir = new file ("d: / a"); file [] file_list = dir.listfiles (); for (file list: file_list) {if (list.isdirectory ()) {file dir_1 = list.listFiles (); // Le code commence ici et peut être récursif logiquement infiniment if (dir_1.isdirectory ()) {....}} else {System.out.println (list.getAbsolutePath ()); }}Les pièces de code répétées sont encapsulées, de sorte que la méthode récursive est utilisée pour encapsuler le code et résoudre le problème récursif infini. Le code final est le suivant:
import java.io. *; public class listallfiles {public static void main (String [] args) {file dir = new file ("d: / a"); System.out.println ("Dir ------>" + dir.getAbsolutepath ()); Listall (dir); } public static void listall (file dir) {file [] file_list = dir.listFiles (); pour (fichier file: file_list) {if (file.isdirectory ()) {System.out.println ("dir ------>" + file.getabsolutepath ()); listall (fichier); } else {System.out.println ("file ------->" + file.getAbsoluTepath ()); }}}}4.2 Exemple 2: Liste des fichiers (file d'attente) dans l'ensemble du répertoire
Idées:
1. Itérer sur le répertoire donné. Mettez le nom du répertoire que vous avez traversé dans la collection.
2. Ilérez sur chaque élément de répertoire de la collection et ajoutez les sous-répertoires traversés à la collection. Enfin, supprimez-le de la collection après chaque traversée.
3. De cette façon, tant que le répertoire est trouvé, il continuera de traverser jusqu'à ce qu'un certain répertoire soit traversé et que le prochain répertoire au même niveau commencera à traverser.
Ce qu'il faut considérer, c'est quel type de collection utiliser. Tout d'abord, les éléments d'annuaire de la collection n'ont pas besoin d'être triés et les noms de sous-répertoire dans différents répertoires peuvent être répétés. Par conséquent, la collection de liste est utilisée à la place de la collection de sets. Étant donné que les éléments sont fréquemment ajoutés et supprimés, la liste Linked au lieu de la collection ArrayList est utilisée. La caractéristique la plus importante de la collection LinkedList est la file d'attente FIFO.
Par rapport à la traversée récursive, l'avantage d'utiliser des files d'attente pour traverser le répertoire est que les éléments sont placés dans des conteneurs, et ils sont tous dans la mémoire du tas, ce qui rend difficile le débordement de la mémoire.
Importer java.util. *; Importer java.io. *; public class ListallFiles2 {public static void main (String [] args) {file dir = new File ("d: / a"); File d'attente <fichier> file_queue = new queue <fichier> (); // construire un fichier de file d'attente [] list = dir.listFiles (); pour (fichier file: list) {// transsuler le répertoire de niveau supérieur if (file.isdirectory ()) {System.out.println ("dir ----->" + file.getabsolutepath ()); file_queue.add (fichier); } else {System.out.println ("file ------>" + file.getabsolutepath ()); }} while (! file_queue.isnull ()) {// Commencez à partir du sous-répertoire secondaire, Traverse File subDirs = file_queue.get (); // Obtenez d'abord le fichier de nom de sous-répertoire secondaire [] subfiles = subdirs.listFiles (); for (file subDir: subfiles) {// transtraight chaque sous-répertoire de niveau suivant if (subdir.isdirectory ()) {System.out.println ("dir ------>" + subdir.getaBsolutepath ()); file_queue.add (subdir); // s'il existe un sous-répertoire dans la couche intérieure, ajoutez à la file d'attente} else {System.out.println ("File ------->" + subdir.getAbsolutepath ()); }}}}}}}}}} Class Queue <e> {private LinkedList <E> LinkedList; Queue () {LinkedList = new LinkedList <e> (); } public void add (e e) {LinkedList.addFirst (e); // Advanced} public e get () {return linkedList.Removelast (); // First Out} public boolean isNull () {return LinkedList.iSempty (); }}4.3 Exemple 3: La structure d'arbre affiche des fichiers dans l'ensemble du répertoire (récursif)
Idées:
1. Répertoriez d'abord les répertoires et fichiers de premier niveau.
2. S'il s'agit d'un répertoire, ajoutez un symbole de préfixe qui forme une forme d'arbre. Ensuite, parcourez ce répertoire, qui nécessite une traversée récursive.
Importer java.io. *; public class TreeFiles {public static void main (String [] args) {file dir = new file ("d: / a"); System.out.println (dir.getName ()); listChilds (dir, 1); } public static void listChilds (fichier f, int niveau) {string prefix = ""; pour (int i = 0; i <niveau; i ++) {prefix = "|" + prefix; } File [] files = f.listFiles (); pour (fichier file: fichiers) {if (file.isdirectory ()) {System.out.println (prefix + file.getName ()); listChilds (fichier, niveau + 1); } else {System.out.println (prefix + file.getName ()); }}}}Les résultats sont les suivants:
A | a.sql | B | | E | | 1.TXT | | | 2.txt | | | 3.TXT | | F | | 4.txt | | | 5.txt | | | 6.txt | back.log | C | | E | | | ace1.txt | | | ace2.txt | | | ace3.txt | | F | | | 4.txt | | | 5.txt | | | 6.txt | D | | A.java | | ABC (1) .txt | | ABC (2) .txt | | ABC (3) .txt | | B.Java | | c.java
4.4 Supprimer l'ensemble du répertoire
Importer java.io. *; classe publique FileDelete {public static void main (String [] args) {file file = new File ("d: / a"); rm (fichier); } public static void rm (fichier f) {if (! f.exists ()) {System.out.println ("Fichier introuvable!"); retour; } else if (f.isfile ()) {f.delete (); retour; } Fichier [] dir = f.listFiles (); pour (fichier de fichier: dir) {rm (fichier); } f.delete (); }}Résumer
Ce qui précède est la liste des fichiers de répertoire d'affichage Java et de supprimer le répertoire introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!