zoukankan      html  css  js  c++  java
  • 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 的您一份参考。

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

     

  • 相关阅读:
    《让未来的你,感谢现在的自己》——自己努力
    老罗——《我的奋斗》
    1. opencv的初体验
    opencv初体验
    opencv的初体验
    python学习2——数据类型
    卷积的意义
    C#学习笔记一
    C++知识点
    二维数组作为参数传递
  • 原文地址:https://www.cnblogs.com/fengpingfan/p/5317894.html
Copyright © 2011-2022 走看看