完成如下功能:
输入任意路径,判断该路径是否为目录,如果是则返回其中的*.exe,要求按照降序排列。
注意:路径的写法。
学习要点:
- 遍历Arraylist
- 使用java.util.regex中的Pattern和Matcher
- 使用File类
- 使用简单的正则表达式
- Array的排序
import java.io.File;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.Collections;
import java.lang.String;
import java.util.Iterator;
public class FindEXE{
public static void main(String args[]){
//输入目录
Scanner in = new Scanner(System.in);
String directory = in.next();
File path = new File(directory);
//创建匹配器
Pattern p = Pattern.compile(".+.exe"); //匹配.exe文件
//保存结果
ArrayList<String> answer = new ArrayList();
if(path.isDirectory()){
File[] files = path.listFiles();
//遍历目录下的文件
for(File fm : files){
if(fm.isFile()){
String name = fm.getName();
if( p.matcher(name).matches() ){
//如果匹配成功,则加入answer中
answer.add(name);
}
}
}
//对名称按照字典序降序排序
CustomComparator cmp = new CustomComparator();
Collections.sort(answer, cmp);
Iterator<String> it = answer.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
else{
System.out.println("不是目录");
}
}
}
package test;
import java.util.Comparator;
public class CustomComparator implements Comparator<String>{
public int compare(String s1, String s2) {
return -s1.toString().compareTo(s2.toString()); //负号表示降序排序
}
}