一个递归遍历文件夹的例子

在项目里面用到的,在一个文件夹下找到所有的msml格式的文件,用String返回它们的绝对路径,都放在一个list里。文件夹下可能还有文件夹,msml文件可能放在任何一级的文件夹下,这里实际上写了一个最基本的递归文件夹去找某个符合要求的选项的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package  meta.util;
 
import  java.io.File;
import  java.util.ArrayList;
 
 
 
public  class  ScanDir {
 
     private  ArrayList filelist =  new  ArrayList(); //放在一个list中
 
     public  ArrayList getFilelist() {
         return  filelist;
     }
 
     public  void  setFilelist(ArrayList filelist) {
         this .filelist = filelist;
     }
 
     
     
     
     //递归查找路径strPath下的所有msml后缀的文件
     public  void  refreshFileList(String strPath) {
 
         String filename; //文件名
         String suf; //文件后缀
         File dir =  new  File(strPath); //文件夹dir
         File[] files = dir.listFiles(); //文件夹下的所有文件或文件夹
 
         if  (files ==  null )
             return ;
 
         for  ( int  i =  0 ; i < files.length; i++) {
             
             if  (files[i].isDirectory()) 
             {
                 System.out.println( "---"  + files[i].getAbsolutePath());
                 refreshFileList(files[i].getAbsolutePath()); //递归文件夹!!!
 
            
             else  {
                 filename = files[i].getName();  
                 int  j = filename.lastIndexOf( "." );  
                 suf = filename.substring(j+ 1 ); //得到文件后缀
                 
                 
                 if (suf.equalsIgnoreCase( "msml" )) //判断是不是msml后缀的文件
                 {
                     String strFileName = files[i].getAbsolutePath().toLowerCase();
                     
                     filelist.add(files[i].getAbsolutePath()); //对于文件才把它的路径加到filelist中
                 }               
             }
             
         }
     }
     
}

得到了这样一个list,就可以依次对每个msml文件进行解析,用DOM解析或者SAX,获取一些元数据信息

你可能感兴趣的:(javacore)