需求
从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
005IO流otheraccess_file.txt......srccngiteasytestTest1.javaTest2.javaTest3.java..................
分析
- 获取所有文件和文件夹,返回的File数组
- 遍历数组
- 无论是文件还是文件夹,都需要直接打印
-
实现
public static File getDir() {//1.创建键盘录入对象Scanner sc = new Scanner(System.in);System.out.println("请输入一个文件夹路径:");//2.定义一个无限循环while(true) {//3.将键盘录入的结果存储并封装成File对象String line = sc.nextLine();File dir = new File(line);//4.对File对象判断if(!dir.exists()) {System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:");}else if(dir.isFile()) {System.out.println("您录入的是文件路径,请输入一个文件夹路径:");}else {//5.将文件夹路径对象返回return dir;}}}
public static void printLev(File dir,int lev) {//1.把文件夹中的所有文件以及文件夹的名字按层级打印File[] subFiles = dir.listFiles();//2.遍历数组for (File subFile : subFiles) {for(int i = 0; i <= lev; i++) {System.out.print("\t");}//3.无论是文件还是文件夹,都需要直接打印//System.out.println(subFile);System.out.println(subFile.getName());//4.如果是文件夹,递归调用if(subFile.isDirectory()) {//printLev(subFile,lev + 1);printLev(subFile,++lev);}}}
public static void main(String[] args) {File dir = getDir();printLev(dir,0);}
