天天看点

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

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

总结

❤️ 感谢大家

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 关注

    盼盼小课堂

    ,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。