1. Есть два способа пройти все файлы в папке в Java:
1. Рекурсивный обход обычно является первым методом, о котором могут подумать разработчики. Преимущества рекурсивного обхода: оно относительно просто в реализации, количество кода относительно невелико, а эффективность выполнения высока. Недостаток: он потребляет больше памяти и требует высокого оборудования.
// рекурсивно Траверсировать private void getDirectory (файл файла) {file flist [] = file.listfiles (); if (flist == null || flist.length == 0) {return 0; } for (file f: flist) {if (f.isdirectory ()) {// Все папки будут перечислены здесь System.out.println ("dir ==>" + f.getabsolutePath ()); getDirectory (f); } else {// все файлы будут указаны здесь System.out.println ("file ==>" + f.getabsolutePath ()); }}}2. Нерекурсивное обход. Рекурсивный обход легко понять, но, вероятно, нелегко подумать об этом. Я долго думал и обнаружил, что у Java есть вещь LinkedList. Я буквально знаю, что это используется для сохранения списка связанных файлов. Если это папка, это будет легко сделать. Конкретная идея: при прохождении папки, если это папка, она будет добавлена в LinkedList, и если это файл, она будет перечислена; Таким образом, файлы и папки в каталоге пересекаются, и все папки сохраняются в L в LinkedList; Так что осталось, это пересекать файлы в LinkedList. Метод обхода такой же, как и вышеуказанная операция. Если это папка, она добавляется в LinkedList (PS: LinkedList во время процесса обхода всегда один и тот же список). Конечно, после того, как каждая папка выводится из списка, папку необходимо удалить из списка. Вот LinkedList.removeFirst () для чтения, так что первый элемент списка читается и удален из списка. Таким образом, до тех пор, пока вы пересекаете состояние LinkedList Isemty, это означает, что обход был завершен.
// нерекурсирующий траверс private void getDirectorySize (файл файла) {linkedList list = new LinkedList (); // Сохранить список папок, которые для проезда getOneR (файл, список); // Вызовите метод, чтобы пройти файл файла корневого каталога TMP; while (! list.isempty ()) {tmp = (file) list.removefirst (); // Суждение в этом месте немного избыточно, но ради страхования это все еще является решением. Обычно в списке есть только папки //, но особые случаи не исключаются, например: цель, которая является самой папкой, становится файлом после того, как его вставли в стек if (tmp.isdirectory ()) {getNodiRSize (tmp, list);} else {System.out.println ("file ==>" tmp.getabsolutepath ());}}}} // Траверсировать файл в корневом каталоге указанной папки Private void getOneir (файл файл, список LinkedList) {// Этот метод будет вызван для каждой папки Traversal System.out.println ("dir ==>" + f.getabsolutePath (); 1; if (files == null || files.length == 0) {return;} для (файл f: файлы) {if (f.isdirectory ()) {list.add (f);} else {// Это перечисляет все файлы в корневом каталоге текущей системы папок.2. Используйте Java, чтобы пройти папку и получить все содержимое в ней
пакет 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); filePath) {file root = new File (filePath); file [] files = root.listFiles (); для (файл файла: файлы: файлы) {if (file.isdirectory ()) {// Если файл является каталогом, повторно вызовите шкаф для пола // call. getFiles (file.getAbsolutePath ()); filelist.add (file.getabsolutePath ()); System.out.println («Покажите все подкатарии и их файлы в разделе«+filePath+»«+file.getabSolutePath ());} use {// если это не является SubmentIn -SubmitInm. В разделе "+filePath+" "+file.getAbsolutePath ());}}}}Изображение воспроизведения:
Суммировать
Выше приведено полный код этой статьи о переселении файлов в фоновой папке Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!