English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il existe deux méthodes pour naviguer dans tous les fichiers d'un dossier dans Java:
1La navigation récursif, c'est généralement la méthode que les développeurs pensent en premier, les avantages de la navigation récursif sont: simple à réaliser, moins de code, efficacité d'exécution élevée, mais les inconvénients sont: consomme plus de mémoire, exigences matérielles élevées
// Navigation récursif private void getDirectory(File file) { File flist[] = file.listFiles(); if (flist == null || flist.length == 0) { return 0; } for (File f : flist) { if (f.isDirectory()) { //Voici la liste de tous les dossiers System.out.println("Dir==>"); + f.getAbsolutePath()); getDirectory(f); } else { //Voici la liste de tous les fichiers System.out.println("file==>"); + f.getAbsolutePath()); } } }
2La navigation non récursif, il est facile de comprendre la navigation récursif, mais la navigation non récursif est peut-être plus difficile à comprendre, j'ai aussi cherché longtemps, j'ai découvert que Java a une LinkedList, qui signifie littéralement une liste de liens, et je sais que c'est pour stocker une liste de fichiers de liens, si j'ai cela, c'est facile à faire, l'idée est la suivante: lors de la navigation dans un dossier, si c'est un dossier, il est ajouté à la LinkedList, s'il s'agit d'un fichier, il est répertorié; ainsi, tous les fichiers et dossiers de ce répertoire sont navigués, et tous les dossiers sont sauvegardés dans la LinkedList; donc ce qui reste à faire est de naviguer dans les fichiers des dossiers de la LinkedList, la méthode de navigation est la même que ci-dessus, si c'est un dossier, il est ajouté à la LinkedList (Ps: la LinkedList est toujours la même pendant le processus de navigation), bien sûr, après avoir retiré un dossier de la liste, il doit être supprimé de la liste, ici, on utilise LinkedList.removeFirst() pour lire, ce qui signifie que chaque élément de la liste est lu et supprimé de la liste. Donc, dès que la LinkedList est vide, cela signifie que la navigation est terminée.
// Parcourir de manière non récursive private void GetDirectorySize(File file) { LinkedList list = new LinkedList(); //Enregistrer la liste du dossier à parcourir GetOneDir(file, list); //Appeler la méthode de parcourir les fichiers du répertoire racine du dossier File tmp; while (!list.isEmpty()) { tmp = (File) list.removeFirst(); //L'judgment ici est un peu superflu, mais pour être sûr, nous faisons quand même une jugement, dans les cas normaux, la liste ne contient que des dossiers //Mais cela ne signifie pas qu'il n'y a pas de cas spéciaux, par exemple : un objectif qui était un dossier est devenu un fichier après avoir été poussé sur la pile if (tmp.isDirectory()) { GetOneDirSize(tmp, list); } else { System.out.println("file==>"); + tmp.getAbsolutePath()); } } } // Parcourir les fichiers du répertoire racine du dossier spécifié private void GetOneDir(File file , LinkedList list){ //Cette méthode est appelée à chaque parcours de dossier System.out.println("Dir==>"); + f.getAbsolutePath()); File[] files = file.listFiles(); sumdir += 1; if (files == null || files.length == 0) { return ; } for (File f : files) { if (f.isDirectory()) { list.add(f); } else { //Voici une liste de tous les fichiers du répertoire racine du dossier actuel System.out.println("file==>"); + f.getAbsolutePath()); } } }
Deuxièmement, parcourir un dossier en Java et obtenir tous les contenus qu'il contient
package demo0;823; 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 (File file : files){ if(file.isDirectory()){ //si file est un répertoire, appeler récursivement l'armoire //appel récursif getFiles(file.getAbsolutePath()); fileList.add(file.getAbsolutePath()); System.out.println("Affichage"+filepath+"sous tous les sous-répertoires et fichiers"+file.getAbsolutePath()); } //si ce n'est pas un répertoire, parcourir ses fichiers sous-répertoires System.out.println("Affichage"+filepath+"sous tous les fichiers enfants"+file.getAbsolutePath()); } } } }
Illustration :
Résumé
Voici le contenu complet du code de parcourir les fichiers dans le dossier d'arrière-plan de Java, j'espère que cela vous sera utile. Les amis intéressés peuvent continuer à consulter d'autres sujets pertinents sur ce site, et vous êtes invité à laisser des commentaires si vous trouvez des insuffisances. Merci de votre soutien à ce site !
Déclaration : le contenu de cet article est来源于网络, et appartient au propriétaire du droit d'auteur. Le contenu est contribué et téléversé par les utilisateurs d'Internet, ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume pas de responsabilité juridique pertinente. Si vous trouvez du contenu suspect de violation de droits d'auteur, vous êtes invité à envoyer un e-mail à : notice#oldtoolbag.com (au moment de l'envoi d'un e-mail, veuillez remplacer # par @ pour faire une plainte, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)