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

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

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

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

     // 目录文件列表
public static LinkedList<String> fileList = new LinkedList<String>(); /**
* <strong>获取文件夹中文件列表</strong><br>
* <br>
* <li>当目录非法或目录不存在时,返回null</li>
* <br>
* @author Aaron.ffp
* @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java getfList, 2016-03-15 23:51:06.049 Exp $
*
* @param dir 目录
* @param recursion 是否递归获取子目录文件列表(true,获取)
* @return 文件列表
*/
public static LinkedList<String> getfList(String dir, boolean recursion) {
if (!StringUtils.isBlank(dir)) {
File fDir = new File(dir); if (fDir.isFile() || !fDir.exists()) {
return null;
} File[] fList = fDir.listFiles(); for (int i = 0; i < fList.length; i++) {
if (fList[i].isFile()) {
fileList.add(fList[i].getPath());
} else {
if (recursion) {
getfList(fList[i].getPath(), recursion);
}
}
}
} else {
return null;
} return fileList;
} /**
* <strong>获取文件夹中文件列表</strong><br>
* <ul>
* <li>当目录非法或目录不存在时,返回null</li>
* </ul>
* <br>
* @author Aaron.ffp
* @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java getfList, 2016-03-24 23:10:27.594 Exp $
*
* @param dir 目录
* @return 文件列表
*/
public static LinkedList<String> getfList(String dir) {
LinkedList<String> fl = new LinkedList<String>(); if (!StringUtils.isBlank(dir)) {
File fDir = new File(dir); if (fDir.isFile() || !fDir.exists()) {
return null;
} File[] fList = fDir.listFiles(); for (int i = 0; i < fList.length; i++) {
if (fList[i].isFile()) {
fl.add(fList[i].getPath());
}
}
} else {
return null;
} return fl;
}

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

    @Test(description="public static LinkedList<String> FileUtils.getfList(String dir, boolean recursion) ---> 破坏性:null、空\n", 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) ---> 破坏性:文件\n", 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) ---> 通过性:合法目录(递归获取子目录文件列表)\n", 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) ---> 通过性:合法目录\n", 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 的您一份参考。

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

Java学习-042-获取目录文件列表(当前,级联)的更多相关文章

  1. Java学习-045-目录中文件拷贝

    挺晚的了,直接上码.敬请各位小主参阅,若有不足之处,敬请指正,非常感谢! 目录文件拷贝源码: /** * <strong>目录拷贝</strong><br> * & ...

  2. java学习一目了然——File类文件处理

    java学习一目了然--File类文件处理 File类(java.io.File) 构造函数: File(String path) File(String parent,String child) F ...

  3. atitit.提升备份文件复制速度(4) ---数据挖掘 获取回收站文件列表

    atitit.) ---数据挖掘 获取回收站文件列表 1. 放入回收站的原理and 1 2. info2文件文件结构 1 3. 获得文件列表2个法: 正则表达式or解析 1 4. 路径正则表达式[a- ...

  4. Java学习-021-Properties 获取配置项对应的值

    在日常的脚本编写过程中,通常会获取配置文件中的配置项,以执行相应的业务逻辑. 小二上码...若有不足之处,敬请大神指正,不胜感激! 获取配置项值的源码如下所示: /** * Get value fro ...

  5. c#FTP操作类,包含上传,下载,删除,获取FTP文件列表文件夹等Hhelp类

    有些时间没发表文章了,之前用到过,这是我总结出来关于ftp相关操作一些方法,网上也有很多,但是没有那么全面,我的这些仅供参考和借鉴,希望能够帮助到大家,代码和相关引用我都复制粘贴出来了,希望大家喜欢 ...

  6. Java 快速入门-06-JDK 目录文件说明

    Java 快速入门-06-JDK 目录文件说明 JDK:开发环境,搞技术的人或者应用服务器使用 JRE:运行环境,如浏览器插件或者Swing界面的客户端等最终用户需要使用 JDK自含一个JRE,并依赖 ...

  7. C#FTP操作类含下载上传删除获取目录文件及子目录列表等等

    ftp登陆格式  : ftp://[帐号]:[密码]@[IP]:[端口] ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名 直接上代码吧,根据需要选择函数,可根据业务自己 ...

  8. java工具类获取properties文件的配置

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  9. dir listing 目录文件列表索引

    一般而言,网站应用都有一个入口,比如说:index.php,index.html,app.js等.通过这个路口,以及相应的路由功能,去到网站各个功能版块. 而网站的目录结构,目录里面的文件列表,一般都 ...

随机推荐

  1. 【原】iOS学习46之第三方CocoaPods的安装和使用(通用方法)

    本文主要说明CocoaPods的安装步骤.使用说明和常见的报错即解决方法. 1. CocoaPods 1>  CocoaPods简介 CocoaPods是一个用来帮助我们管理第三方依赖库的工具. ...

  2. Motion images compression and restoration based on computer vision

    This technique should apply to both normal video (consequtive sequences of pictures of real world) a ...

  3. Android Drawable

    1. Shape 属性: (1) solid ( 填充 ) 参数:android:color ( 填充的颜色 ) (2) gradient ( 渐变 ) 参数:android:startColor ( ...

  4. Codeforces Round #251 (Div. 2) B. Devu, the Dumb Guy

    注意数据范围即可 #include <iostream> #include <vector> #include <algorithm> using namespac ...

  5. ACM Arithmetic Expression

    Description Given N arithmetic expressions, can you tell whose result is closest to 9? Input Line 1: ...

  6. 使用Canvas绘制图形的基本教程

    原文地址:http://www.cnblogs.com/picaso/archive/2012/11/26/2789077.html HTML5火的正热,最近有个想法也是要用到HTML的相关功能,所以 ...

  7. 树莓派(Raspberry Pi)修改时区

    1.安装ntp sudo apt-get install ntpdate 2.修改时区 tzselect 3.选择自己的时区 1)选择大洲 2)选择国家 3)选择城市 4)选择YES 5)或者使用命令 ...

  8. 在配置IIS负载均衡时,引起的一系列问题

    问题一: IIS中要上传文件的路径是另一台服务器的地址(如:本机IP是192.168.0.100,文件保存的路径在://192.168.0.101/images/folder),在上传时抛出异常: A ...

  9. Controller 通信 发布接收广播

    在Angularjs开发一些经验总结随笔中提到我们需要按照业务却分angular controller,避免过大无所不能的上帝controller,我们把controller分离开了,但是有时候我们需 ...

  10. OSG中的示例程序简介

    OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...