首页 > 编程语言 >Java获取目录下的文件你知道是用哪个方法吗

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

时间:2022-11-05 21:07:50浏览次数:34  
标签:文件 Java list 获取 FilenameFilter File 过滤器 方法 目录

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. 欢迎关注我❤️,点赞

    标签:文件,Java,list,获取,FilenameFilter,File,过滤器,方法,目录
    From: https://blog.51cto.com/u_15460453/5826058

相关文章

  • Java集合接口Enumeration
    Java集合接口EnumerationEnumeration接口是Iterator迭代器的“古老版本”,从JDK1.0开始,Enumeration接口就已经存在了(Iterator从JDK1.2才出现)。Enumeration接口只有两个......
  • Java工具类Collections
    Java工具类Collections1.*Collections介绍Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作......
  • Java的HashSet和HashMap性能选项
    Java的HashSet和HashMap性能选项1.*HashSet和HashMap的性能选项对于HashSet及其子类而言,它们采用hash算法来决定集合中元素的存储位置,并通过hash算法来控制集合的大小;对......
  • SpringBoot实战笔记:02_使用注解与Java配置的Aop示例
    转载:https://blog.csdn.net/android_zyf/article/details/79579875<!--02_新的依赖--><!--导入spring的aop支持--><dependency><groupId>${spring-groupId}</groupId>......
  • 999001 TXT 目录整理
    0造价函数|----00函数解释|----01函数使用1造价公式|----10套用公式2造价运算|----20计量计价3造价表格|----30表格表单4造价图形|----40图表......
  • Java的Map集合
    Java的Map集合1.*MapMap用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value都可以是任何引用类......
  • java IO复制文件
    packagecom.tedu.day1201;importjava.io.FileInputStream;importjava.io.FileOutputStream;publicclassCopyFile{publicstaticvoidmain(String[]args)......
  • JAVA----线程生命周期和状态
    1.新建状态(New)新创建了一个线程对象,但还没有调用start()方法。实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了新建状态。2.Runnable状态......
  • SpringBoot实战笔记:01_Spring中的Java配置
    转载:https://blog.csdn.net/android_zyf/article/details/79579862Spring4.x与SpringBoot都推荐使用Java配置xml配置:将bean的信息配置在xml配置文件中注解配置:在对应的bea......
  • 把数据直接上传到分区目录上,让分区表和数据产生关联的三种方式
    方式一:上传数据后修复上传数据--创建文件hive(default)>dfs-mkdir-p/user/hive/warehouse/mydb.db/dept_partition2/day=20200401/hour=13;--上传数据hive(de......