java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
搜索文件優(yōu)化,使用文件過(guò)濾器來(lái)搜索文件
我們可以使用過(guò)濾器來(lái)實(shí)現(xiàn)在某一目錄下指定文件格式的搜索
在File類中有兩個(gè)和ListFiles重載的方法,方法的參數(shù)傳遞的就是過(guò)濾器
一、FileFilter
File[] listFiles(FileFilter filter)
java.io.FileFilter接口:用于抽象路徑名(File對(duì)象)的過(guò)濾器。
作用:用來(lái)過(guò)濾文件(File對(duì)象)
抽象方法:用來(lái)過(guò)濾文件的方法boolean accept(File pathname) 測(cè)試指定抽象路徑名是否應(yīng)該包含在某個(gè)路徑名列表中。
參數(shù):File pathname使用ListFiles方法遍歷目錄,得到的每一個(gè)文件對(duì)象
二、FilenameFilter
File[] listFiles(FilenameFilter filter)
java.io.FilenameFilter接口:實(shí)現(xiàn)此接口的類實(shí)例可用于過(guò)濾器文件名。
作用:用于過(guò)濾文件名稱
抽象方法:用來(lái)過(guò)濾文件的方法
boolean accept(File dir, String name) 測(cè)試指定文件是否應(yīng)該包含在某一文件列表中。
參數(shù):
File dir:構(gòu)造方法中傳遞的被遍歷的目錄
String name:使用ListFiles方法遍歷目錄,獲取的每一個(gè)文件/文件夾的名稱
注意:
兩個(gè)過(guò)濾器接口是沒(méi)有實(shí)現(xiàn)類的,需要我們自己寫實(shí)現(xiàn)類,重寫過(guò)濾的方法accept,在方法中自己定義過(guò)濾的規(guī)則
package cn.itsqq.main;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
public class Demo8Filter {
public static void main(String[] args) {
File file=new File("D:\\a");
getAllFileName2(file);
}
public static void getAllFileName(File file){
//FileFilter
File[] files = file.listFiles(new FileFilter() {//過(guò)濾器匿名內(nèi)部類 實(shí)現(xiàn)accept方法
@Override
public boolean accept(File pathname) {
//過(guò)濾規(guī)則,pathname是文件夾或者是.java結(jié)尾的文件返回true
return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java");
}
});
for (File f1 : files) {
//System.out.println("B==="+f1);
if(f1.isDirectory()){
getAllFileName(f1);//遞歸
//System.out.println("C==="+f1);
}else {
System.out.println(f1);
}
}
}
public static void getAllFileName2(File file){
//FilenameFilter
File[] files = file.listFiles(new FilenameFilter() {//過(guò)濾器匿名內(nèi)部類 實(shí)現(xiàn)accept方法
@Override
public boolean accept(File dir, String name) {
//過(guò)濾規(guī)則,dir+name是文件夾或者是.java結(jié)尾的文件返回true
return new File(dir,name).isDirectory() || name.toLowerCase().endsWith(".java");
}
});
for (File f1 : files) {
//System.out.println("B==="+f1);
if(f1.isDirectory()){
getAllFileName(f1);//遞歸
//System.out.println("C==="+f1);
}else {
System.out.println(f1);
}
}
}
}
總結(jié)
以上是生活随笔為你收集整理的java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 我的世界java一键修复_我的世界JAV
- 下一篇: java k线绘制,用Java绘制K线图