java文件过滤器(File类listFiles方法可选参数)--获取目录下指定的某类文件

举报
ShaderJoy 发表于 2021/12/29 23:23:30 2021/12/29
【摘要】 有时候需要在程序中查找某一目录下的某一类文件,例如需要在E:\data\file_selector_test 目录下面查找所有已.java为后缀名的文件。其实这个功能自己也可以实现,很简单,只需要遍历一下目录下的所有文件,判断一下文件名称的结尾字符串是否为".java"即可。虽然这么做可以实现,但是没有必要,java api中已经有相...

有时候需要在程序中查找某一目录下的某一类文件,例如需要在E:\data\file_selector_test 目录下面查找所有已.java为后缀名的文件。其实这个功能自己也可以实现,很简单,只需要遍历一下目录下的所有文件,判断一下文件名称的结尾字符串是否为".java"即可。虽然这么做可以实现,但是没有必要,java api中已经有相关的方法来实现这一功能。

File类有一个listFiles(FileNameFilter filter).只需要实现一个简单的filter就可以做到。例如我要在E:\data\file_selector_test 目录下面查找以.java 或者.txt结尾的文件,我可以这么做。见下例。


  
  1. 类名:FileNameSelector
  2. import java.io.File;
  3. import java.io.FilenameFilter;
  4. public class FileNameSelector implements FilenameFilter
  5. {
  6. String extension = ".";
  7. public FileNameSelector(String fileExtensionNoDot)
  8. {
  9. extension += fileExtensionNoDot;
  10. }
  11. @Override
  12. public boolean accept(File dir, String name)
  13. {
  14. return name.endsWith(extension);
  15. }
  16. public static void main(String[] args)
  17. {
  18. File directory = new File("E:\\data\\file_selector_test");
  19. //列出所有文件
  20. File[] files = directory.listFiles();
  21. System.out.println("\n目录"+directory.getName()+"下的所有文件");
  22. for(File file : files)
  23. {
  24. System.out.print(" " + file.getName());
  25. }
  26. //列出所有.txt文件
  27. File[] txtFiles = directory.listFiles(new FileNameSelector("txt"));
  28. System.out.println("\n目录"+directory.getName()+"下的.txt文件");
  29. for(File file : txtFiles)
  30. {
  31. System.out.print(" " + file.getName());
  32. }
  33. //列出所有.java文件
  34. File[] javaFiles = directory.listFiles(new FileNameSelector("java"));
  35. System.out.println("\n目录"+directory.getName()+"下的.java文件");
  36. for(File file : javaFiles)
  37. {
  38. System.out.print(" " + file.getName());
  39. }
  40. }
  41. }

 原地址: http://blog.sina.com.cn/s/blog_7a27a9bf0100s887.html

文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/8483000

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。