1. Do not use recursive method calls.
public void TraverseFolder1 (String path) {int filenum = 0, foldernum = 0; File File = new file (path); if (file.exists ()) {linkedlist<file> list = new linkedlist<file> (); file[] files = file.listfiles (); for (File file2:files) {if (File2.isdirectory ()) {System.out.println ("folder:" + file2. GetAbsolutePath ()); List.add (file2); foldenum++; } else {System.out.println ("file:" + File2.getabsolutepath ()); filenum++; }} File Temp_file; while (!list.isempty ()) {temp_file = List.removefirst (); Files = Temp_file.listfiles (); for (File file2:files) {if (File2.isdirectory ()) {System.out.println ("folder:") + File2.getabsolutepath ()); List.add (file2); foldernum++; } else {System.out.println ("file:" + File2.getabsolutepath ()); filenum++; }}}} else {System.out.println ("file does not exist!"); } System.out.println ("folder total:" + foldernum + ", file total:" + filenum); }
2. Use recursive method calls.
public void TraverseFolder2 (String path) { file File = new file (path); if (file.exists ()) { file[] files = file.listfiles (); if (Files.length = = 0) { System.out.println ("folder is empty!"); return; } else {for (File file2:files) { if (file2.isdirectory ()) { System.out.println ("folder:" + File2.getabsolutepath ()); TraverseFolder2 (File2.getabsolutepath ()); } else { System.out.println ("file:" + File2.getabsolutepath ());}}}} else { System.out.println ("file does not exist!");} }
All files under the JAVA Traversal folder (recursive calls and non-recursive calls)