我们在开发测试平台的时候,遇到一个这样的问题:通过给远程主机发送一个命令,执行自动化测试用例后,需要获取自动化测试用例report文件夹上新产生的测试报告。测试报告是以时间戳命名的文件夹,但同时会更新几个其他的文件,如下图所示:
我们需要做的是取出最新产生的文件夹,拉取到本地保存起来。可是如何获取最新产生的文件夹呢?网上查了一下,有如下的方法:
(1) 给出文件路径,对文件夹下的所有文件及文件夹进行排序.
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class FileSort {
public static void main(String[] args) {
File file = new File("F:/MerDescription/imp-19038075415690540");
if (file.isDirectory()) { // 判断file是否为目录
String[] fileNames = file.list();
Arrays.sort(fileNames, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if(returnDouble(s1)<returnDouble(s2))
return -1;
else if(returnDouble(s1)>returnDouble(s2))
return 1;
else
return 0;
}
public double returnDouble(String str){
StringBuffer sb = new StringBuffer();
for(int i=0;i<str.length();i++){
if(Character.isDigit(str.charAt(i)))
sb.append(str.charAt(i));
else if(str.charAt(i)=='.'&&i<str.length()-1&&Character.isDigit(str.charAt(i+1)))
sb.append(str.charAt(i));
else break;
}
if(sb.toString().isEmpty())
return 0;
else
return Double.parseDouble(sb.toString());
}
});
for (int i = 0; i < fileNames.length; i++) {
System.out.println(fileNames[i]);
}
}
}
}
运行图: