目录下有子目录,子目录下有子目录,很容易想到用递归来实现。
/** * 递归实现按层级打印目录下的子目录和文件 * @param file 所在目录 * @param count 所在层级 */ public static void getFileName(File file,int count) { for(File f:file.listFiles()) { //遍历目录 String preStr = ""; for(int i=0; i<=count; i++) { //所在层级的输出格式 preStr += " "; } System.out.println(preStr+f.getName()); if(f.isDirectory()){ //是否为目录 count++; getFileName(f,count); //递归调用 } } }
在程序中最好是避免使用递归方法!
非递归实现:
算法设计的不好,就不贴出来了,有好的方法希望能多分享交流。
非递归实现个人觉得满意后再贴出来。