Java学习-042-获取目录文件列表(当前,级联)

以下三个场景,在我们日常的测试开发中经常遇到:

  1. 软件自动化测试,在进行参数测试时,我们通常将所有相似功能的参数文件统一放在一个目录中,在自动化程序启动的时候,获取资源参数文件夹中所有参数文件,然后解析实现参数化;
  2. 自动化测试脚本,每个测试用例类运行时,在 beforeClass(通常选这个) 或 beforeTest 前获取对应目录的参数化文件
  3. 获取某个目录下所有的文件列表(含子目录文件,例如 TestNG生成的测试报告,或者 target/site 工程信息目录),将其拷贝至对应的web服务器目录,供相关人员查阅

以上前两种情况我们都需要获取对应目录下的参数化文件,第三种情况是前两种的进阶,那么我们如何获取对应目录下的文件列表呢?请看如下源码:

获取目录下的文件列表源码:

 1     // 目录文件列表
 2     public static LinkedList<String> fileList = new LinkedList<String>();
 3 
 4     /**
 5      * <strong>获取文件夹中文件列表</strong><br>
 6      * <br>
 7      * <li>当目录非法或目录不存在时,返回null</li>
 8      * <br>
 9      * @author Aaron.ffp
10      * @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java getfList, 2016-03-15 23:51:06.049 Exp $
11      * 
12      * @param dir 目录
13      * @param recursion 是否递归获取子目录文件列表(true,获取) 
14      * @return 文件列表
15      */
16     public static LinkedList<String> getfList(String dir, boolean recursion) {
17         if (!StringUtils.isBlank(dir)) {
18             File fDir = new File(dir);
19             
20             if (fDir.isFile() || !fDir.exists()) {
21                 return null;
22             }
23             
24             File[] fList = fDir.listFiles();
25             
26             for (int i = 0; i < fList.length; i++) {
27                 if (fList[i].isFile()) {
28                     fileList.add(fList[i].getPath());
29                 } else {
30                     if (recursion) {
31                         getfList(fList[i].getPath(), recursion);
32                     }
33                 }
34             }
35         } else {
36             return null;
37         }
38         
39         return fileList;
40     }
41     
42     /**
43      * <strong>获取文件夹中文件列表</strong><br>
44      * <ul>
45      * <li>当目录非法或目录不存在时,返回null</li>
46      * </ul>
47      * <br>
48      * @author Aaron.ffp
49      * @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java getfList, 2016-03-24 23:10:27.594 Exp $
50      * 
51      * @param dir 目录
52      * @return 文件列表
53      */
54     public static LinkedList<String> getfList(String dir) {
55         LinkedList<String> fl = new LinkedList<String>();
56         
57         if (!StringUtils.isBlank(dir)) {
58             File fDir = new File(dir);
59             
60             if (fDir.isFile() || !fDir.exists()) {
61                 return null;
62             }
63             
64             File[] fList = fDir.listFiles();
65             
66             for (int i = 0; i < fList.length; i++) {
67                 if (fList[i].isFile()) {
68                     fl.add(fList[i].getPath());
69                 }
70             }
71         } else {
72             return null;
73         }
74         
75         return fl;
76     }

获取目录下的文件列表单元测试源码:

    @Test(description="public static LinkedList<String> FileUtils.getfList(String dir, boolean recursion) ---> 破坏性:null、空
", groups="getfList")
    public void test_getfList_invalid2() {
        String dir = ConstantInfo.PROJECT_HOME;
        dir = "";
        
        fileList.clear();
        
        LinkedList<String> fList = getfList(dir, true);
        
        Assert.assertTrue(fList == null);
    }
    
    @Test(description="public static LinkedList<String> FileUtils.getfList(String dir, boolean recursion) ---> 破坏性:文件
", groups="getfList")
    public void test_getfList_invalid1() {
        String dir = ConstantInfo.PROJECT_HOME;
        dir = "D:\DevTool\workspace\maven\autotest-base\.project";
        
        fileList.clear();
        
        LinkedList<String> fList = getfList(dir, true);
        
        Assert.assertTrue(fList == null);
    }
    
    @Test(description="public static LinkedList<String> FileUtils.getfList(String dir, boolean recursion) ---> 通过性:合法目录(递归获取子目录文件列表)
", groups="getfList")
    public void test_getfList_valid2() {
        String dir = ConstantInfo.PROJECT_HOME;
        
        fileList.clear();
        
        LinkedList<String> fList = getfList(dir, true);
        
        if (fList == null) {
            return;
        }

        for (int i = 0; i < fList.size(); i++) {
            logger.info(fList.get(i));
        }
        
        logger.info("目录中文件总个数为: " + fList.size());
        
        Assert.assertFalse(fList == null);
    }
    
    @Test(description="public static LinkedList<String> FileUtils.getfList(String dir, boolean recursion) ---> 通过性:合法目录
", groups="getfList")
    public void test_getfList_valid1() {
        String dir = ConstantInfo.PROJECT_HOME;
        
        fileList.clear();
        
        LinkedList<String> fList = getfList(dir, false);
        
        if (fList == null) {
            return;
        }

        for (int i = 0; i < fList.size(); i++) {
            logger.info(fList.get(i));
        }
        
        logger.info("目录中文件总个数为: " + fList.size());
        
        Assert.assertFalse(fList == null);
    }

 

至此, Java学习-042-获取目录文件列表(当前,级联) 顺利完结,希望此文能够给初学 JavaWeb 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

 

原文地址:https://www.cnblogs.com/fengpingfan/p/5317894.html