Discuss / Java / 【作业】-递归遍历目录,打印出文件和目录

【作业】-递归遍历目录,打印出文件和目录

Topic source

使用了额外的产生空格的函数,来实现不同的缩进

package com.itranswarp.learnjava;

import java.io.File;
import java.io.IOException;

public class Main {

	public static void main(String[] args) throws IOException {
		File currentDir = new File(".");
		
		listDir(currentDir.getCanonicalFile(), 0);
	}
	
	public static String getSpace(int level) {
		String temp = "";
		for (int i = 0; i < level; i++) {
			temp += "   ";
		}
		return temp;
	}

	
	static void listDir(File dir, int dir_level) {
		//先把当前目录打印出来(根据传入的目录级别打印空格)
		System.out.println(getSpace(dir_level)+dir+"\\");
		
		//列出所有文件和子目录
		File[] fs = dir.listFiles();
		
		
		if (fs != null) {
			for (File f : fs) {
				//判断f,如果是文件,先打印文件
				if (f.isFile()) {
					System.out.println(getSpace(dir_level+1)+f.getName());
				}else {
					//如果是目录,继续递归执行
					listDir(f,dir_level+1);
				}
			}

		}
	}
}

运行结果

C:\java_eclipse_workspace\io-file\
   .classpath
   .project
   C:\java_eclipse_workspace\io-file\bin\
      C:\java_eclipse_workspace\io-file\bin\com\
         C:\java_eclipse_workspace\io-file\bin\com\itranswarp\
            C:\java_eclipse_workspace\io-file\bin\com\itranswarp\learnjava\
               Main.class
   C:\java_eclipse_workspace\io-file\src\
      C:\java_eclipse_workspace\io-file\src\com\
         C:\java_eclipse_workspace\io-file\src\com\itranswarp\
            C:\java_eclipse_workspace\io-file\src\com\itranswarp\learnjava\
               Main.java

  • 1

Reply