java之io之File类的list()方法过滤目录的使用
Posted WesTward
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之io之File类的list()方法过滤目录的使用相关的知识,希望对你有一定的参考价值。
java的io的知识中,File类必须掌握。File类是对文件或者文件夹的封装。它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等。
如果File封装的文件夹,File类的list()方法可以将此文件夹下的所有文件夹和文件已字符串数组的形式返回。
list(FilenameFilter)可以对返回的字符串数组进行过滤,取自己想要的字符串。
?打印文件夹下的.java文件
实现1
package com.westward.io; import java.io.File; import java.io.FilenameFilter; import java.util.regex.Pattern; public class ListFileDemo { public static void main(String[] args) { File file= new File(".."); listFileJava(file); } public static void listFileJava(File file){ for (String string : file.list(new DirFilter(".*\\.java"))) { System.out.println(string); } } } class DirFilter implements FilenameFilter{ private Pattern pattern; public DirFilter(String regex) { // TODO Auto-generated constructor stub pattern= Pattern.compile(regex); } @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return pattern.matcher(name).matches(); } }
实现2 匿名内部类的形式
package com.westward.io; import java.io.File; import java.io.FilenameFilter; import java.util.regex.Pattern; public class ListFileDemo2 { public static void main(String[] args) { File file= new File(".."); final String regex= ".*\\.java"; String[] files= file.list(new FilenameFilter() { private Pattern pattern= Pattern.compile(regex); @Override public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); } }); for (String string : files) { System.out.println(string); } } }
output:
Demo.java
hha.java
ln.java
注意:
匿名内部类若 需要访问外部方法的局部变量,那么局部变量必须被 final 所修饰。
以上是关于java之io之File类的list()方法过滤目录的使用的主要内容,如果未能解决你的问题,请参考以下文章