首页 新闻 会员 周边 捐助

用JAVA遍历文件夹时怎么先遍历文件夹内的文件后遍历文件夹内的文件夹?

0
悬赏园豆:10 [已关闭问题] 关闭于 2016-03-09 10:40

题目在下面的代码中,当我设置成aaa文件夹下有bbb.txt,ccc.txt,ddd.txt且eee文件夹,eee文件夹下有fff.txt,ggg.txt且还有fff文件夹,fff文件夹下有aaa1.txt,aaa2.txt,aaa3.txt时遍历就出现问题了 : 原先fff.txt以及ggg.txt应该和fff在同一层,然后fff的下一层是aaa1.txt,aaa2.txt,aaa3.txt

下面是程序运行后的结果:

F:\aaa
aaa
  bbb.txt
  ccc.txt
  ddd.txt

  eee

    fff
      aaa1.txt
      aaa2.txt
      aaa3.txt
      fff.txt
      ggg.txt

public class Test8 {

 1 package study.test;
 2 
 3 import java.io.File;
 4 import java.util.Scanner;
 5 //加一个判断语句,将文件夹的排列顺序放在最后
 6 public class Test8 {
 7 /*题目:从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
 8 aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
 9 aaa
10     bbb.txt
11     ccc.txt
12     ddd.txt
13 
14     eee
15         fff.txt
16         ggg.txt
17 下面是自己写的内容
18     分析:
19     1、创建键盘录入对象并输入路径
20     2、判断是否是文件夹路径(调用getDir方法)
21     3、创建文件对象数组并使用list方法获取
22     4、遍历数组,判断是否是文件,是文件则输出文件名,是文件夹则输出文件夹名并递归*/
23     public static void main(String[] args) {
24         File dir = getDir();
25         int num = 1;
26         //输出输入的文件夹名字
27         System.out.println(dir.getName());
28         print(dir,num);
29     }
30     public static File getDir(){
31         //1、新建键盘录入对象,并录入字符串
32         Scanner sc = new Scanner(System.in);
33         System.out.println("请输入路径:");
34         //2、判断是否是文件夹路径(调用getDir方法)
35         while(true) {
36             String line = sc.nextLine();
37             File file = new File(line);
38             if (!file.exists()) {
39                 System.out.println("输入路径错误,请重新输入:");
40             }else if(file.isFile()) {
41                 System.out.println("输入的路径为文件路径,请重新输入:");
42             }else if(file.isDirectory()){
43                 return file;
44             }
45         }
46     }
47     public static void print(File dir,int num) {
48     
49         //3、创建文件对象数组并使用list方法获取
50         File[] files = dir.listFiles();
51         for (File file : files) {
52             //4、遍历数组,判断是否是文件,是文件则输出文件名,是文件夹则输出文件夹名并递归
53             if(file.isFile()) {
54                 for (int i = 0; i < num; i++) {
55                     System.out.print(" ");
56                 }
57                 System.out.println(file.getName());
58             }else if(file.isDirectory()) {
59                 System.out.println();
60                 for (int i = 0; i < num; i++) {
61                     System.out.print(" ");
62                 }
63                 System.out.println(file.getName());
64                 num++;
65                 print(file,num);
66             }
67         }
68     }
69 }

 

 

My_code的主页 My_code | 菜鸟二级 | 园豆:202
提问于:2016-03-09 10:02
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册