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

  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. git的合并与推送

    集中式合作模式 1.git fetch 获取远程更新 2.git merge origin/master 进行合并,如果报错,则相应解决.注:你得用git bash命令行执行才能看见报错详情,用ecl ...

  2. js/jQuery判断浏览器名称、内核版本、浏览器壳

    1.js方法 /* 判断浏览器名称和版本 目前只能判断:ie/firefox/chrome/opera/safari 2012年5月16日23:47:08 浏览器内核UA:UA; 浏览器内核名称:NV ...

  3. HDU1518 Square(DFS,剪枝是关键呀)

    Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submi ...

  4. font 和 text 字和文本操作

  5. 【HDU】1517 A Multiplication Game

    http://acm.hdu.edu.cn/showproblem.php?pid=1517 题意:每次乘上2~9..p>=n时赢.. #include <cstdio> #incl ...

  6. 【BZOJ3224】Tyvj 1728 普通平衡树 Splay

    Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数 ...

  7. 开篇&TexturePacker打出图集给UGUI使用

    开篇: 前段时间,网上流出了一套手游源码,本想着把服务器端搭一下,给自己认识小伙伴们调试着把这套源码学习一下.于是就买一个阿里云服务器,可是花了几天时间,就是run不起来了啊.还好网上已经有人搭出来了 ...

  8. window 安装Mysql 5.6 发生系统错误 1067

    问题: #安装MySQL服务:mysqld -install MySQL5 D:\Program Files\mysql_5.6.24_winx64\bin>mysqld -install My ...

  9. IOS 网络请求方式

    iOS开发中的网络请求   今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异 ...

  10. Solr JAVA客户端SolrJ 4.9使用示例教程

    http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...