Java获取目录下的文件你知道是用哪个方法吗

时间:2022-11-05 17:55:57

Java获取目录下的文件你知道是用哪个方法吗

Java的文件操作模块也是一个重要的模块,当初学Java的文件操作的时候一头雾水,觉得很难,现在复盘一下,巩固一下文件操作的知识,没准有新的收获。那就是从File类开始吧

File

File类是文件名和目录路径名的抽象表示,它是一个文件集,所以他的实例可能是一个目录也可能是一个文件,我们可以通过isDirectory()方法来判断是否为目录。

list()方法

它的list()方法可以返回目录下的文件列表,以数组的形式返回,这个方法返回的数组元素不能保证以特定的顺序出现,更不能按照字母顺序出现,在使用的时候我们通过File path = new File("."); 来获取File对象,.表示的是当前目录,然后path.list()方法获取当前目录下的所有文件,返回String类型的数组,既然是数组我们可以调用Arrays.sort()方法来对这数组排序。

含过滤器参数的list()方法

File类中还有一个含参的list(FilenameFilter filter)方法,它同样是返回一个字符串数组,方法的行为与list()方法的行为相同,只是返回数组中的字符串必须满足过滤器,如果这个过滤器参数设置为null的话,表示所有的文件名字都满足条件。

FilenameFilter是一个过滤文件名的接口,它只有一个方法。

FilenameFilter接口:

public interface FilenameFilter {
    
    boolean accept(File dir, String name);
}

它的accept()方法,也就是满足条件的话这方法返回true,名称满足过滤器。

对应接口,我们可以定义一个匿名内部类,这里我们还是不使用匿名内部类了,它的阅读性不大好,我们实现一下这个接口:

class XppFilter implements FilenameFilter {
  private Pattern pattern;
  public XppFilter(String regex) {
    pattern = Pattern.compile(regex);
  }
  public boolean accept(File dir, String name) {
    return pattern.matcher(name).matches();
  }
}

这个实现类怎么使用呢?我们可以通过path.list(new DirFilter(”.java“)) 来过滤目录下的文件,文件名包含.java的通过过滤器,accept()方法返回true

这其实是策略模式的体现,根据实现FilenameFilter名称过滤器接口定义不同的过滤策略,让代码更加的灵活。

总结

这篇文章我们讲了File类和它的两个关键的方法,list()方法获取目录下的所有文件,list(FilenameFilter filter)方法可以定义文件名过滤器对目录下的文件按名称进行筛选过滤,这两个方法还是很重要的。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞????????,评论????,转发????
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。