1. Hay dos formas de atravesar todos los archivos en una carpeta en Java:
1. El recorrido recursivo suele ser el primer método que los desarrolladores pueden pensar. Las ventajas del recorrido recursivo son: es relativamente simple de implementar, la cantidad de código es relativamente pequeña y la eficiencia de ejecución es alta. La desventaja es: consume más memoria y requiere un alto hardware.
// Recursivamente Traverse private void getDirectory (archivo de archivo) {file flist [] = file.listfiles (); if (flist == null || flist.length == 0) {return 0; } para (archivo f: flist) {if (f.isDirectory ()) {// Todas las carpetas se enumerarán aquí System.out.println ("Dir ==>" + F.GetabSolutePath ()); getDirectorio (f); } else {// Todos los archivos se enumerarán aquí system.out.println ("file ==>" + f.getabsolutePath ()); }}}2. Traversal no recursivo. El recorrido recursivo es fácil de entender, pero probablemente no sea fácil de pensar en ello. Pensé durante mucho tiempo y descubrí que Java tiene una cosa de Linkedlist. Literalmente sé que esto se usa para guardar una lista de archivos vinculados. Si esta es una carpeta, será fácil de hacer. La idea específica es: al atravesar una carpeta, si es una carpeta, se agregará a LinkedList, y si es un archivo, se enumerará; De esta manera, los archivos y carpetas en el directorio están atravesados, y todas las carpetas se guardan en L en la lista de tinta; Entonces, lo que queda es atravesar los archivos en LinkedList. El método transversal es el mismo que la operación anterior. Si se trata de una carpeta, se agrega a LinkedList (PS: LinkedList durante el proceso de transversal es siempre la misma lista). Por supuesto, después de que cada carpeta se saca de la lista, la carpeta debe eliminarse de la lista. Aquí hay un LinkedList.RemoveFirst () para leer, de modo que el primer elemento de la lista se lea y elimine de la lista. De esta manera, siempre que avance al estado de Linkedlist Isemty, significa que se ha completado el recorrido.
// no recursivo transversal void private getDirectorySize (archivo de archivo) {LinkedList list = new LinkedList (); // Guarde la lista de carpetas que se atravese getonedir (archivo, lista); // Llame al método para atravesar el archivo de directorio raíz TMP; while (! list.isEmpty ()) {tmp = (archivo) list.removeFirst (); // El juicio en este lugar es un poco redundante, pero por el seguro, sigue siendo un juicio. Normalmente, solo hay carpetas en la lista // pero no se descartan casos especiales, por ejemplo: el objetivo que es una carpeta en sí se convierte en un archivo después de ser empujado a la pila if (tmp.isDirectory ()) {getonedirSize (tmp, list);} else {system.out.println ("file =" + " +" + " tmp.getAbsolutePath());}}}}// Traverse the file in the root directory of the specified folder private void GetOneDir(File file, LinkedList list){//This method will be called for each folder traversal System.out.println("Dir==>" + f.getAbsolutePath());File[] files = file.listFiles (); sumdir += 1; if (file == null || file.length == 0) {return;} for (file f: files) {if (f.isDirectory ()) {list.add (f);} else {// Enumera todos los archivos en el directorio raíz del sistema actual. F.GetAbSolutePath ());}}}2. Use Java para atravesar una carpeta y obtener todos los contenidos en ella
paquete 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 [] string filePath = "g: // test // iCon"; getFiles (filepath);} sthic args) filePath) {file root = new File (filePath); file [] files = root.listFiles (); for (archivo archivo: files) {if (file.isDirectory ()) {// Si el archivo es un directorio, llame recursivamente al gabinete de piso // recursivamente getFiles (file.getabsolutePath ()); fileList.add (file.getabsolutePath ()); system.out.println ("Muestre todos los subdirectorios y sus archivos en"+filepath+""+file.getabsolutePath ();} else {// si no es un director, será el sistema de archivos inferior del suelo. subfiles en "+filepath+" "+file.getabsolutePath ());}}}}Imagen de reproducción:
Resumir
Lo anterior es el código completo de este artículo sobre el recorrido de los archivos en la carpeta de fondo Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!