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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Alexander 中级黑马   /  2014-3-11 23:00  /  1103 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我之前在学java的文件操作时,遇到这个问题,怎样打印一个目录下的所有文件的绝对路径(包括文件名),于是便自己写了个打印目录的程序,结果看起来很让人头疼,从上到下全是一堆路径,后来想,光有路径也不行,最好要是能标注哪个文件夹下有哪些文件,类似树状结构的表现最好,不知道哪位能给个比较好的答案,实现两点
1.将E盘下的所有文件(不是目录)打印出来,包括绝对路径和文件名
2.以树状结构显示,能清楚的看出哪些文件在那个文件夹下
   文件夹的显示效果如下
  E
      - 文件
                -a.txt
                -b.txt
                -........
      -音乐
                -征服.mp3
                -泡沫.mp3  
                -爱听的
                        -发如雪.mp3
                        -最长的电影.mp3
                        -............
       -电影
                -动作片
                        -刀锋战士.rmvb
                        -十二生肖.rmvb
                        -...........
                -爱情片
                         -山楂树之恋.avi
                         -恋爱通告.rmvb
                -喜剧
                         -大话西游.rmvb
                         -整蛊专家.rmvb
         -............................
     被这个问题困扰很久了,大家帮帮忙!

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

2 个回复

倒序浏览
你可以考虑遇到txt文件就装到“文件”文件夹里,遇到MP3文件就装到“音乐”文件夹里等等,最后再遍历这些文件架打出树状结构,额。。树状结构毕老师的视频讲的很详细
PS:看到爱情片莫名邪恶了一下- -

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
楼上说的毕老师的视频我还没有看到,所以自己想了一种方式出来,但是同一目录中的文件和目录的排序问题没有解决


  1. import java.io.File;
  2. public class ListFile {
  3.         private int count ;

  4.         public ListFile(String folder){
  5.                 listFile(new File(folder).listFiles());
  6.         }

  7.         private void listFile(File[] files) {
  8.                 for (File f : files) {
  9.                         if (f.isFile()) {
  10.                                 count++;
  11.                                 printTab();
  12.                                 System.out.println("<f>"+f.getName());
  13.                                 count--;
  14.                         }

  15.                         if (f.isDirectory()) {
  16.                                 count++;
  17.                                 printTab();
  18.                                 System.out.println("<d>"+f.getName());
  19.                                 listFile(f.listFiles());
  20.                                 --count;
  21.                         }
  22.                 }
  23.     }

  24.         private void printTab(){
  25.                 char ch = '\t';
  26.                 StringBuilder sb = new StringBuilder();
  27.                 for(int i = count; i>1;i--){
  28.                         sb.append(ch);
  29.                 }
  30.                 System.out.print(sb);       
  31.         }

  32.         public static void main(String[] args) {
  33.                 new ListFile("D:\\视频");
  34.         }
  35. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马