1. Es gibt zwei Möglichkeiten, alle Dateien in einem Ordner in Java zu überqueren:
1. Rekursives Traversal ist normalerweise die erste Methode, an die Entwickler denken können. Die Vorteile des rekursiven Durchgangs sind: Es ist relativ einfach zu implementieren, die Codemenge ist relativ gering und die Ausführungseffizienz ist hoch. Der Nachteil ist: Es verbraucht mehr Speicher und erfordert hohe Hardware.
// rekursiv private void getDirectory (Dateidatei) {Datei flist [] = file.listfiles (); if (flist == null || flist.length == 0) {return 0; } für (Datei f: flist) {if (f.isdirectory ()) {// Alle Ordner werden hier system.out.println ("Dir ==>" + f.getabsolutepath ()) aufgeführt. GetDirectory (f); } else {// Alle Dateien werden hier system.out.println ("file ==>" + f.getabsolutepath ()) aufgeführt; }}}2. Nicht rekursive Durchquerung. Rekursive Traversal ist leicht zu verstehen, aber es ist wahrscheinlich nicht einfach, darüber nachzudenken. Ich dachte lange und stellte fest, dass Java eine LinkedList -Sache hat. Ich weiß buchstäblich, dass dies verwendet wird, um eine Liste mit verknüpften Dateien zu speichern. Wenn dies ein Ordner ist, ist dies einfach. Die spezifische Idee ist: Beim Überqueren eines Ordners wird es bei der LinkedList hinzugefügt, wenn es sich um einen Ordner handelt, und wenn es sich um eine Datei handelt, wird sie aufgeführt. Auf diese Weise werden die Dateien und Ordner im Verzeichnis durchquert, und alle Ordner werden in der Inkedlist in L gespeichert. Was noch übrig bleibt, ist, die Dateien in der LinkedList zu durchqueren. Die Traversalmethode entspricht der obigen Operation. Wenn es sich um einen Ordner handelt, wird es zur LinkedList hinzugefügt (PS: Die verknüpfte Liste während des Traversalprozesses ist immer dieselbe Liste). Nachdem jeder Ordner aus der Liste herausgenommen wurde, muss der Ordner aus der Liste gelöscht werden. Hier ist eine verknüpfte Liste. Auf diese Weise, solange Sie in den Zustand der LinkedList -Isemty fahren, bedeutet dies, dass der Traversal abgeschlossen wurde.
// Nicht recursive Durchqueren private void getDirectorySize (Dateidatei) {LinkedList List = New LinkedList (); // Speichern Sie die Liste der Ordner, die Getonedir (Datei, Liste), die Methode aufrufen, um die Root-Verzeichnisdatei-Datei TMP zu durchqueren; while (! list.isempty ()) {tmp = (Datei) list.removefirst (); // Das Urteil an diesem Ort ist ein bisschen überflüssig, aber für die Versicherung ist es immer noch ein Urteil. Normally, there are only folders in the list // But special cases are not ruled out, for example: the target that is a folder itself becomes a file after being pushed into the stack if (tmp.isDirectory()) {GetOneDirSize(tmp, list);} else {System.out.println("file==>" + tmp.getabsolutepath ());}}}} // Überqueren Sie die Datei im Stammverzeichnis des angegebenen Ordners privates void getonedir (Dateidatei, LinkedList -Liste) {// Diese Methode wird für jeden Ordner -Traversal -System aufgerufen.Out.println ("Dir ==>" + F.GetAbsoluTePath (). Dateien []; Datei.ListFiles (); f.getabsolutepath ());}}}2. Verwenden Sie Java, um einen Ordner zu durchqueren und alle Inhalte darin zu erhalten
Paket Demo0823; import Java.io.file; import Java.util.ArrayList; öffentliche Klasse Filetest {private statische ArrayList <String> filelist = new ArrayList <string> (); public static void main (String [] args) {String filepath = "G: // test // icon; filepath) {file root = new Datei (filepath); file [] file = root.listfiles (); für (Dateidatei: Datei) {if (file.isdirectory ()) {// Wenn die Datei ein Verzeichnis ist, rufen Sie revansiv den Bodenschrank // Recursiv Call auf. Rufen getFiles (File.getabsolutepath ()); filelist.add (File.getabsolutepath ()); System.out.println ("Alle Subdirektorien und ihre Dateien unter"+filepath+""+Datei.getabsolutepath ());} else {//, wenn es keine Direktdirektorin zeigt. Unterfilme unter "+filepath+" "+file.getabsolutepath ());}}}}Reproduktionsbild:
Zusammenfassen
Das obige ist der vollständige Code dieses Artikels zum Durchqueren von Dateien im Java -Hintergrundordner. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!