java 按照名称查找文件

完成如下功能: 
输入任意路径,判断该路径是否为目录,如果是则返回其中的*.exe,要求按照降序排列。 
注意:路径的写法。 


学习要点:

  1. 遍历Arraylist
  2. 使用java.util.regex中的Pattern和Matcher
  3. 使用File类
  4. 使用简单的正则表达式
  5. 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());  //负号表示降序排序
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值