java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
搜索文件優化,使用文件過濾器來搜索文件
我們可以使用過濾器來實現在某一目錄下指定文件格式的搜索
在File類中有兩個和ListFiles重載的方法,方法的參數傳遞的就是過濾器
一、FileFilter
File[] listFiles(FileFilter filter)
java.io.FileFilter接口:用于抽象路徑名(File對象)的過濾器。
作用:用來過濾文件(File對象)
抽象方法:用來過濾文件的方法boolean accept(File pathname) 測試指定抽象路徑名是否應該包含在某個路徑名列表中。
參數:File pathname使用ListFiles方法遍歷目錄,得到的每一個文件對象
二、FilenameFilter
File[] listFiles(FilenameFilter filter)
java.io.FilenameFilter接口:實現此接口的類實例可用于過濾器文件名。
作用:用于過濾文件名稱
抽象方法:用來過濾文件的方法
boolean accept(File dir, String name) 測試指定文件是否應該包含在某一文件列表中。
參數:
File dir:構造方法中傳遞的被遍歷的目錄
String name:使用ListFiles方法遍歷目錄,獲取的每一個文件/文件夾的名稱
注意:
兩個過濾器接口是沒有實現類的,需要我們自己寫實現類,重寫過濾的方法accept,在方法中自己定義過濾的規則
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() {//過濾器匿名內部類 實現accept方法
@Override
public boolean accept(File pathname) {
//過濾規則,pathname是文件夾或者是.java結尾的文件返回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() {//過濾器匿名內部類 實現accept方法
@Override
public boolean accept(File dir, String name) {
//過濾規則,dir+name是文件夾或者是.java結尾的文件返回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);
}
}
}
}
總結
以上是生活随笔為你收集整理的java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界java一键修复_我的世界JAV
- 下一篇: java k线绘制,用Java绘制K线图