1. Il existe deux façons de traverser tous les fichiers dans un dossier en Java:
1. La traversée récursive est généralement la première méthode à laquelle les développeurs peuvent penser. Les avantages de la traversée récursive sont: il est relativement simple à mettre en œuvre, la quantité de code est relativement faible et l'efficacité de l'exécution est élevée. L'inconvénient est: il consomme plus de mémoire et nécessite un matériel élevé.
// Recursively Traverse private void getDirectory (fichier file) {file flist [] = file.listFiles (); if (flist == null || flist.length == 0) {return 0; } pour (fichier f: flist) {if (f.isdirectory ()) {// Tous les dossiers seront répertoriés ici System.out.println ("dir ==>" + f.getAbsolutepath ()); getDirectory (f); } else {// Tous les fichiers seront répertoriés ici System.out.println ("file ==>" + f.getabsolutepath ()); }}}2. Traversion non réécursive. La traversée récursive est facile à comprendre, mais il n'est probablement pas facile d'y penser. J'ai réfléchi depuis longtemps et j'ai trouvé que Java a une chose liée. Je sais littéralement que cela est utilisé pour enregistrer une liste de fichiers liés. S'il s'agit d'un dossier, ce sera facile à faire. L'idée spécifique est: lors de la traversée d'un dossier, s'il s'agit d'un dossier, il sera ajouté à la liste Linked, et s'il s'agit d'un fichier, il sera répertorié; De cette façon, les fichiers et les dossiers du répertoire sont traversés, et tous les dossiers sont enregistrés sur L dans la liste Inked; Donc, ce qui reste est de traverser les fichiers dans la liste Linked. La méthode de traversée est la même que l'opération ci-dessus. S'il s'agit d'un dossier, il est ajouté à la liste Linked (PS: la liste Linked pendant le processus de traversée est toujours la même liste). Bien sûr, une fois que chaque dossier est retiré de la liste, le dossier doit être supprimé de la liste. Voici un lienList.RemoveFirst () à lire, afin que le premier élément de la liste soit lu et supprimé de la liste. De cette façon, tant que vous traversez à l'état de lienList Isemty, cela signifie que la traversée a été achevée.
// TRAVERSE PRIVERSAL NON-RECURSAL VOID GetDirectorySize (fichier File) {LinkedList list = new LinkedList (); // Enregistrez la liste des dossiers à parcourir GetOnedir (fichier, list); // Appelez la méthode pour traverser le fichier de fichier Root Directory Fichier Tmp; tandis que (! list.isempty ()) {tmp = (fichier) list.removeFirst (); // Le jugement à cet endroit est un peu redondant, mais par souci d'assurance, c'est toujours un jugement. Normalement, il n'y a que des dossiers dans la liste // mais les cas spéciaux ne sont pas exclus, par exemple: la cible qui est un dossier lui-même devient un fichier après avoir été poussé dans la pile if (tmp.isdirectory ()) {getOneDirsize (tmp, list);} else {system.out.println ("file ==>" + tmp.getabsolutepath ());}}}} // traverse le fichier dans le répertoire racine du dossier spécifié private void getOnedir (fichier de fichier, linkedList list) {// cette méthode sera appelée pour chaque dossier Traversal System.out.println ("Dir ==>" + f.getabsolupath ()); file [] fileS = File.SlistFiles ();); + = 1; if (files == null || files.length == 0) {return;} pour (fichier f: files) {if (f.isdirectory ()) {list.add (f);} else {// cela répertorie tous les fichiers dans le répertoire racine du system de dossier actuel.out.println ("file ==>" + f.getabsol2. Utilisez Java pour traverser un dossier et obtenir tout le contenu dedans
package demo0823;import java.io.File;import java.util.ArrayList;public class FileTest {private static ArrayList<String> fileList = new ArrayList<String>();public static void main(String[] args) {String filepath = "G://Test//icon";getFiles(filepath);}static void getFiles(String filepath) {file root = new file (filepath); file [] files = root.listFiles (); for (fichier file: fichiers) {if (file.isdirectory ()) {// si le fichier est un répertoire, appelez récursivement la cabinet de sol // getFiles (file.getabsolutepath ()); fileList.add (file.getabsolutepath ()); System.out.println ("Afficher tous les sous-répertoires et leurs fichiers sous" + filepath + "" + file.getabsolupath ());} else {// si ce n'est pas un répertoire, il ne paraîtra pas le système de fichiers sous-sol. sous "+ filepath +" "+ file.getabsolutepath ());}}}}Image de reproduction:
Résumer
Ce qui précède est le code complet de cet article sur la traversée des fichiers dans le dossier d'arrière-plan Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!