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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈军 中级黑马   /  2012-10-25 08:48  /  1293 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈军 于 2012-10-25 08:49 编辑

第一种:毕老师的那种,用递归
第二种:用Iterator迭代器。代码如下
public static void main(String[] args) {
  File dir=new File("E:\\");
  if (!dir.exists()) {
            System.out.println("目录不存在");
            return ;
         }
  LinkedList<File> fileList = new LinkedList<File>();
  fileList.add(dir);
  
  for(Iterator<File> it=fileList.iterator();it.hasNext();it=fileList.iterator()){
   File f1=it.next();
   File[]files=f1.listFiles();   
   if(files!=null){
    for(File f:files){   
     if(f.isDirectory()){
            fileList.add(f);
           }
           else
           {
            System.out.println("path: " + f.getAbsolutePath());
           }
    }
    fileList.remove(f1);
   }
  }
}

第三种:用removeFirst()或者pollFirst(),结合addlLast().代码如下
public static void main(String[] args) {
  LinkedList<File> linkedList = new LinkedList<File>();
        File fileDir = new File("E:\\");
        if (!fileDir.exists()) {
            System.out.println("目录不存在");
            return ;
         }
         linkedList.addLast(fileDir);
         while (linkedList.size() > 0) {
                File file = linkedList.removeFirst();
                File[] files = file.listFiles();
                if(files!=null){
                 for (File file2 : files) {
                        if (file2.isDirectory()) {
                            linkedList.addLast(file2);
                        } else {
                            System.out.println("path: " + file2.getAbsolutePath());                          
                        }
                    }
                }               
         }         
}
总结:当要操作的目录文件不太大的时候,可以用递归。(递归最容易理解)
           当要操作的目录文件太大的时候,用下面2种好,当然第3种好些。(因为递归很浪费空间)

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

1 个回复

倒序浏览
感谢总结和分享~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马