递归应用:遍历文件夹
public class FileList { public static void main(String[] args) { printFiles(new File("d:/Program Files")); } public static void printFiles(File file) { if (file.isDirectory()) { //判断文件是不是文件夹 File fileArray[] = file.listFiles(); for (int i = 0; i < fileArray.length; i++) { System.out.println(fileArray[i].getName()); if (fileArray[i].isDirectory()) { //判断每个文件是不是文件夹 printFiles(fileArray[i]);//递归 } } } else { System.out.println(file.getName()); } } }
控制台输出如下:
下面对代码进行一些优化让输出的文件目录变得更清晰:
public class FileList { public static void main(String[] args) { printFiles(new File("d:/Program Files"),1); } public static void printFiles(File file,int tab) { if (file.isDirectory()) { //判断文件是不是文件夹 File fileArray[] = file.listFiles(); for (int i = 0; i < fileArray.length; i++) { for (int j = 0; j < tab; j++) { System.out.print("|--"); } System.out.println(fileArray[i].getName()); if (fileArray[i].isDirectory()) { //判断每个文件是不是文件夹 printFiles(fileArray[i],tab+1);//递归 tab+1:如果有子目录变量tab+1 } } } else { System.out.println(file.getName()); } } }