运用Java遍历文件夹的方法总结

来源:互联网 发布:工程网络计划gert 编辑:程序博客网 时间:2024/04/29 10:57

一般遍历文件效率较高的都是采用递归算法执行的,下面的是简单的递归调用实现文件遍历:

package com.Interator;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class InteratorFile {
 private static List list=new ArrayList();
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  InteratorFile iFile=new InteratorFile();
  File file=new File("E://war3");
  iFile.findFile(file,0);
  }
 public void findFile(File file,int j){//传参数j的目的主要是体现文件的层次。
  File[] files=file.listFiles();
  if(files==null){
   return;
  }
  else{
   for (int i=0;i<files.length;i++){
    if(files[i].isDirectory()){
     findFile(files[i].getAbsoluteFile(),j++);
    }
    else{
     String path=files[i].getAbsolutePath();
     for(int k=0;k<j;k++){
      System.out.print("+");
     }
     System.out.println(path);
     list.add(files[i].getAbsolutePath());
    }
   }
  }
 }

}

一部分运行结果:

E:/war3/Warcraft III/amai_2.45b/AMAI Debug Version.exe
E:/war3/Warcraft III/amai_2.45b/AMAI vs AI.exe
E:/war3/Warcraft III/amai_2.45b/AMAI_TFT.exe
+E:/war3/Warcraft III/blizzard.ax
+E:/war3/Warcraft III/bncache.dat
+E:/war3/Warcraft III/BNUpdate.exe
+E:/war3/Warcraft III/bnupdate.log
+E:/war3/Warcraft III/Campaigns/DemoCampaign.w3n
++E:/war3/Warcraft III/CustomKeyInfo.txt
++E:/war3/Warcraft III/CustomKeysSample.txt

 

另一种就是不用递归算法,这种方式经测试要低于递归算法,实现如下:

package com.text3;

import java.io.File;
import java.util.LinkedList;

public class findFile {
 
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  LinkedList list=new LinkedList();
  File file=new File("E://war3");
  File [] files=file.listFiles();
  for(int i=0;i<files.length;i++){
   if(files[i].isDirectory()){
    list.add(files[i]);
   }
   else{
    System.out.println(files[i].getAbsolutePath());
   }
  }
  File temp;
  while(!list.isEmpty()){
   temp=(File)list.removeFirst();
   int j=0;
   if(temp.isDirectory()){
    files=temp.listFiles();
    if(files!=null){
     for(int i=0;i<files.length;i++){
      if(files[i].isDirectory()){
       list.add(files[i]);
       j++;
      }
      else{
       for(int k=0;k<j;k++){
        System.out.print("+");
       }
       System.out.println(files[i].getAbsolutePath());
      }
     }
    }
    else{
     continue;
    }
   }
   else{
    System.out.println(temp.getAbsolutePath());
   }
  }
 }

}
一部分运行结果:

+E:/war3/Warcraft III/bncache.dat
+E:/war3/Warcraft III/BNUpdate.exe
+E:/war3/Warcraft III/bnupdate.log
++E:/war3/Warcraft III/CustomKeyInfo.txt
++E:/war3/Warcraft III/CustomKeysSample.txt
++++E:/war3/Warcraft III/Frozen Throne.exe
++++E:/war3/Warcraft III/Game.dll
++++E:/war3/Warcraft III/ijl15.dll
++++E:/war3/Warcraft III/INSTALL.LOG
+++++++E:/war3/Warcraft III/Mss32.dll
+++++++++E:/war3/Warcraft III/replays.ico