A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
         * 把文件夹中的所有文件以及文件夹的名字按层级打印
=======================================================
  1. package com.heima.test_kaoshi;

  2. import java.io.File;
  3. import java.util.Scanner;

  4. public class Test8 {

  5.         /**
  6.          * 需求:从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
  7.          * 把文件夹中的所有文件以及文件夹的名字按层级打印
  8.          *
  9.          * 分析:
  10.          * 创建键盘录入对象,并判断是否合法
  11.          * 获取到路径下的文件夹
  12.          * 创建文件对象数组
  13.          * 遍历数组
  14.          * 首先不管是文件还是文件夹都要打印
  15.          * 如果是文件夹的话,调用递归的同时,将层级+1,调用递归,打印制表符"\t"
  16.          */
  17.         public static void main(String[] args) {
  18.                 File f = method();
  19.                 print(f,0);
  20.                
  21.         }
  22.        
  23.         public  static void print(File f,int lev) {
  24.                 //创建文件对象数组
  25.                 File[] f1 = f.listFiles();
  26.                
  27.                 //遍历数组
  28.                 for(File f2 : f1){
  29.                         for(int i = 0;i<lev;i++){
  30.                                 System.out.print("\t");
  31.                         }
  32.                         //不管是文件还是文件夹,就打印
  33.                         System.out.println(f2.getName());
  34.                         //如果是文件夹的话,调用递归
  35.                         if(f2.isDirectory()){
  36.                                 print(f2,lev+1);
  37.                         }
  38.                 }

  39.         }
  40.        
  41.        
  42.        

  43.         //键盘录入方法
  44.         public static File method(){
  45.                 Scanner sc = new Scanner(System.in);
  46.                 System.out.println("输入正确的文件夹路径...");
  47.                 String line = sc.nextLine();
  48.                 //创建文件
  49.                 File f = new File(line);
  50.                 while (true){
  51.                         if(!f.exists()){
  52.                                 System.out.println("输入错误,路径不存在,请重新输入");
  53.                         }else if(f.isFile()){
  54.                                 System.out.println("输入错误,这是个文件路径,请重输入");
  55.                         }else if(f.isDirectory()){
  56.                                 break;
  57.                         }
  58.                 }
  59.                 return f;
  60.         }

  61. }
复制代码

1 个回复

倒序浏览
做这题的时候,循环打印制表符这一块,有点晕。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马