English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
1. In Java kann man alle Dateien in einem Ordner auf zwei Weisen durchsuchen:
1.Die rekursive Durchsuchung ist oft die erste Methode, die Entwickler denken, und die Vorteile der rekursiven Durchsuchung sind: Relativ einfache Implementierung, weniger Code, höhere Ausführungsleistung, Nachteile: Relativ viel Speicherplatz, höhere Anforderungen an die Hardware
// Rekursive Durchsuchung private void getDirectory(File file) { File flist[] = file.listFiles(); if (flist == null || flist.length == 0) { return 0; } for (File f : flist) { if (f.isDirectory()) { //Hier werden alle Ordner aufgelistet System.out.println("Dir==>" + f.getAbsolutePath()); getDirectory(f); } else { //Hier werden alle Dateien aufgelistet System.out.println("file==>" + f.getAbsolutePath()); } } }
2.Die nicht rekursive Durchsuchung ist leicht zu verstehen, wenn es sich um die rekursive Durchsuchung handelt, aber die nicht rekursive Durchsuchung ist möglicherweise nicht so leicht zu verstehen. Ich habe mich damals auch lange darüber geärgert und habe festgestellt, dass Java eine LinkedList hat, die ich auf den ersten Blick auch etwas verstehe, und das ist eine Liste, um eine Liste von Verknüpfungsdateien zu speichern. Wenn man das hat, ist es einfacher, den folgenden Ansatz zu verwenden: Wenn man einen Ordner durchsucht, fügt man ihn in die LinkedList ein, wenn es sich um einen Ordner handelt, und listet die Dateien auf; dann sind die Dateien und Ordner dieses Verzeichnisses durchsucht, und alle Ordner sind in die LinkedList gespeichert; also bleibt nur, die Dateien in den Ordnern der LinkedList zu durchsuchen, der Durchsuchungsansatz ist derselbe wie oben beschrieben, fügt man einen Ordner hinzu, fügt ihn in die LinkedList ein (Ps: Die LinkedList im Durchsuchungsprozess ist immer die gleiche Liste), natürlich muss man nach dem Entnehmen eines Ordners aus der Liste den Ordner aus der Liste löschen, hier wird LinkedList.removeFirst() verwendet, um den ersten Element der Liste abzurufen und ihn aus der Liste zu entfernen. Wenn die LinkedList im Zustand isEmpty() ist, bedeutet das, dass die Durchsuchung abgeschlossen ist.
// Nicht rekursiver Durchlauf private void GetDirectorySize(File file) { LinkedList list = new LinkedList(); //Speichern Sie die Liste der zu durchsuchenden Ordner GetOneDir(file, list); //Rufen Sie den Methodenaufruf zum Durchsuchen der Dateien im Wurzelverzeichnis des Ordners auf File tmp; while (!list.isEmpty()) { tmp = (File) list.removeFirst(); //Diese Bedingung ist etwas überflüssig, aber aus Sicherheitsgründen wurde eine Bedingung bereitgestellt, da in der Regel nur Ordner in der Liste vorhanden sind //Aber es wird nicht ausgeschlossen, dass es sich um besondere Fälle handelt, z.B. wenn das Ziel, das selbst ein Ordner ist, nach dem Einfügen in den Stapel zu einer Datei wird if (tmp.isDirectory()) { GetOneDirSize(tmp, list); } else { System.out.println("file==>" + tmp.getAbsolutePath()); } } } // Durchsuchen Sie die Dateien im Wurzelverzeichnis des angegebenen Ordners private void GetOneDir(File file , LinkedList list){ //Jeder Ordnerdurchlauf ruft diese Methode auf 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 { //Hier werden alle Dateien im Wurzelverzeichnis des aktuellen Ordners aufgelistet System.out.println("file==>" + f.getAbsolutePath()); } } }
Zwei, Java verwendet, um einen Ordner zu durchsuchen und alle Inhalte zu erhalten
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()){ //Wenn file ein Verzeichnis ist, wird der Rekursive Aufruf der Schrank //Rekursive Aufrufe getFiles(file.getAbsolutePath()); fileList.add(file.getAbsolutePath()); System.out.println("Anzeige"+filepath+"alle Unterordner und Dateien"+file.getAbsolutePath()); } else{ //wenn es sich nicht um ein Verzeichnis handelt, durchsuchen Sie die Dateien im Unterordner System.out.println("Anzeige"+filepath+"alle Unterdateien"+file.getAbsolutePath()); } } } }
Dokumentation:
Zusammenfassung
Dies ist der vollständige Quellcode zur Durchsuchung der Dateien im Backend-Verzeichnis von Java. Ich hoffe, es hilft Ihnen weiter. Freunde, die daran interessiert sind, können weiterhin andere relevante Themen dieser Website lesen. Wenn es Mängel gibt, sind Kommentare willkommen. Vielen Dank für die Unterstützung der Freunde dieser Website!
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet bezogen und gehört dem Urheberrechtlichem Eigentümer. Der Inhalt wurde von Internetbenutzern freiwillig und eigenständig hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Diese Website übernimmt keine Haftung für rechtliche Verantwortlichkeiten. Wenn Sie urheberrechtlich anstößige Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Missbrauch und fügen Sie relevante Beweise bei. Sobald nachgewiesen, wird diese Website die fraglichen urheberrechtlichen Inhalte sofort löschen.)