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

来源:互联网 发布:21端口入侵方法 编辑:程序博客网 时间:2024/05/17 22:50

在项目里面用到的,在一个文件夹下找到所有的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<String> filelist = new ArrayList<String>();//放在一个list中
 
    public ArrayList<String> getFilelist() {
        return filelist;
    }
 
    public void setFilelist(ArrayList<String> 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,获取一些元数据信息

0 0
原创粉丝点击