这是 cxuan 的第 32 篇原创文章 实现 FilenameFilter 接口的类的实例用于过滤文件名。这些实例被用来过滤类 File 的 list 方法中的目录列表。 FilenameFilter 接口很简单,只有一个 accpet 方法 @FunctionalInterface public interface FilenameFilter { boolean 所以FilenameFilter 也只有一个 accpet 方法,它用来测试指定的文件是否应包含在文件列表中。 下面通过一个例子来演示一下 FilenameFilter 的用法 public class FilenameFilterApp { public static void main(String file = new File("."); // 匿名内部类写法,可以用 lambda 表达式改写 File[] files = file.listFiles(new FilenameFilter
-- finish ---- ---- 版本一:接口继承 package com.yeezhao.common.io.v1; import java.io.File; import java.io.FilenameFilter ; import java.util.regex.Pattern; public class MyFilenameFilter implements FilenameFilter { final "); } } 版本二:内部类初始化内部对象属性 package com.yeezhao.common.io.v2; import java.io.File; import java.io.FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File dir, String name --"); } } 版本三:内部类直接调用方法 package com.yeezhao.common.io.v3; import java.io.File; import java.io.FilenameFilter
在项目中需要查找指定目录下特定后缀的文件,在jdk官网上查看资料时找到了FilenameFilter这个类,怎么用也写了,但是就是没给个例子,对有些人实在有些不方便,这也是写这篇文章的初衷,虽然简单但希望能帮到需要的小伙伴们 下面直接入正题,给出demo程序: package net.csdn.johnhuster; import java.io.File; import java.io.FilenameFilter; public class FileNameFilterDemo { //内部类 public class FileFilter implements FilenameFilter { fileNameFilter = fileFilter .new FileFilter(".txt") ; // returns pathnames for files and directory paths = f.listFiles(fileNameFilter); // for each pathname in pathname array
第一章:FilenameFilter的本质与历史定位——策略模式的先驱要真正理解FilenameFilter的价值,我们必须将其置于Java早期面向对象设计思想和文件系统操作需求的背景中考量。 那么,FilenameFilter在NIO.2时代是否已经过时? 6.3.1使用FilenameFilter的场景简单过滤任务:当只需要基于文件名进行简单过滤时,FilenameFilter更加直接。 与AWT组件交互:FileDialog只接受FilenameFilter。教学和入门:FilenameFilter的概念更简单,适合初学者。 第八章:FilenameFilter在现代Java生态中的演进随着Java语言的不断发展,FilenameFilter虽然保持了其核心接口不变,但其使用方式和在生态系统中的定位也在不断演进。
\"<>|]"); public static String filenameFilter(String str){ return str==null? replaceAll(""); } public static void main(String[] args) { System.out.println("str1=" + filenameFilter ("aaa.txt")); System.out.println("str2=" + filenameFilter("bb\\a? *.txt")); System.out.println("str3=" + filenameFilter("cc/:a.txt")); System.out.println ("str4=" + filenameFilter("dd\"a.txt")); System.out.println("str5=" + filenameFilter("[ee<>|a
博客 目录 目录的遍历 public String[] list() 功能 举例 public File[] listFiles() 功能 举例 筛选器 FileFilter() 功能 举例 FilenameFilter () 功能 举例 常见实验题 在指定目录筛选出需要的文件 举例 思路 一、用if语句判断筛选 二、用FileFilter()筛选器 三、用FilenameFilter()筛选器 ---- 目录的遍历 举例 二、用FileFilter()筛选器 FilenameFilter() 功能 文件名筛选器,用于对列表中文件的过滤,只有一个 accpet 方法,参数列表为(File dir, String name ),它用来测试指定的文件是否应包含在文件列表中 举例 三、用FilenameFilter()筛选器 常见实验题 在指定目录筛选出需要的文件 举例 过滤出D盘目录下(不包含子目录)所有后缀名为.jpg的文件并将其绝对路径输出到控制台 ()筛选器 代码 package FileDemo; import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter
package io1; import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; /** * Create * * 要想实现这个效果,就必须学习一个接口:文件名称过滤器 * public String[] list(FilenameFilter filter) * public File[] listFiles (FilenameFilter filter) */ public class demo8 { public static void main(String args[]){ File file = new File("e:/"); // File[] files = file.listFiles(new FilenameFilter() { // 、FileFilter list只有FilenameFilter 重写过滤器accept FilenameFilter accept(File dir, String name) dir是父路径,name
测试指定抽象路径名是否应该包含在某个路径名列表中; 抽象方法的参数说明: File pathname就是使用listFiles方法遍历目录得到的每一个文件对象; 2、File[] listFiles(FilenameFilter filter) java.io 接口 FilenameFilter: 实现此接口的类实例可用于过滤器文件名; 作用: 用于过滤文件名称; 抽象方法: boolean accept(File dir, { System.out.println("File文件名称为"+file.getName()); } } } } 四、FilenameFilter 的使用 1、备注: 在此使用匿名内部类的方式演示FilenameFilter,而实际上FileFilter也可以使用此方式; 2、代码演示 修改后的Test类: package study.filefliter ; import java.io.File; import java.io.FilenameFilter; public class TestFilenameFilter { public
setData(); return mFileDataList; } public FileData getFileData(File file, FilenameFilter SuppressLint("SimpleDateFormat") private void setData() { this.mFileDataList.clear(); FilenameFilter filenameFilter = (dir, name) -> ! new File(curPath).listFiles(filenameFilter) : new File(curPath).listFiles(); if (files ! file.list(filenameFilter) : file.list(); if (names !
-public boolean mkdir() (2).列出目录中的文件 { //有以下两个方法实现: public String [] list(FilenameFilter } */ 1 //package DEMO ; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 import java.net.FileNameMap :FileName) 25 { 26 out(name); 27 } 28 } 29 } 30 class FileAccepte implements FilenameFilter
; System.exit(0); } } ---- 工具类: import java.io.File; import java.io.FilenameFilter; import public static ArrayList<String> listFiles(File file, final String key){ // 创建过滤器对象 FilenameFilter filter = new FilenameFilter() { // 实现accept()方法 public boolean accept(File filter = new FilenameFilter() { // 创建过滤器对象 // 实现accept()方法 public boolean accept filter 过滤器 * @return 过滤器过滤后的文件路径 */ public static ArrayList<String> fileDir(File dir, FilenameFilter
遍历 有如下方法访问一个目录下的子目录和文件: public String[] list() public String[] list(FilenameFilter filter) public File [] listFiles() public File[] listFiles(FileFilter filter) public File[] listFiles(FilenameFilter filter pathname); } FilenameFilter的定义为: public interface FilenameFilter { boolean accept(File dir, String name); } 在遍历子目录和文件时,针对每个文件,会调用FilenameFilter或FileFilter的accept方法,只有accept方法返回true时,才将该子目录或文件包含到返回结果中 FilenameFilter和FileFilter的区别在于,FileFilter的accept方法参数只有一个File对象,而FilenameFilter的accept方法参数有两个,dir表示父目录
类型的子目录、子文件夹 static listRoots() 返回根目录(盘符) 命令设计模式: 例:创建接口并实现,筛选扩展名为psd的文件 subFile = src.listFiles(new FilenameFilter f.getAbsolutePath()); } System.out.println("====子目录|.txt对象===="); //命令设计模式 subFile = src.listFiles(new FilenameFilter System.out.println(src.getAbsolutePath()); if (src.isDirectory()) { for (File l : src.listFiles(/*new FilenameFilter
文件名过滤器 interface FilenameFilter boolean accept(File dir, String name); 源码展示 @FunctionalInterface public interface FilenameFilter { /** * Tests if a specified file should be included in a file list otherwise. */ boolean accept(File dir, String name); } 代码实现: import java.io.File; import java.io.FilenameFilter ; /* * FilenameFilter过滤器演示 */ public class Demo8 { public static void main(String[] args) { File file = new File("C:\\aaa\\ddd"); // 使用匿名内部类的匿名对象直接作为方法的参数 File[] listFiles = file.listFiles(new FilenameFilter
list()不传递任何参数时返回该目录下所有文件或文件名的字符数组(不会递归遍历目录里面的内容【只返回第一层】)如果想要过滤返回结果,可以传递给它一个FilenameFilter对象,该接口只有一个方法 @FunctionalInterface public interface FilenameFilter { boolean accept(File dir, String name); } public String[] list(FilenameFilter filter) { // 策略模式,根据filter是否为null,具有不同的策略 String names[] = list ; import java.util.regex.Pattern; class DirFilter implements FilenameFilter { private Pattern pattern filter]) 返回该目录下所有文件和目录的数组 可以传入一个FilenameFilter filter,表示列出满足过滤器的文件或目录名 public File[] listFiles([FilenameFilter
java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter = new File("d:\\java"); File desDir = new File("d:\\jad"); File files[] = srcDir.listFiles(new FilenameFilter
这两个Filter是java.io.FilenameFilter和java.io.FileFilter: @FunctionalInterface public interface FilenameFilter 两者的区别在于,FilenameFilter进行过滤的是文件名和文件所在的目录。而FileFilter进行过滤的直接就是目标文件。 在java中是没有目录的概念的,一个目录也是用File的表示的。 上面的两个使用起来非常类似,我们就以FilenameFilter为例,看下怎么删除.log文件: public void useFileNameFilter() { String
先枚举出路径目录下的所有文件,枚举的同时实现一个FilenameFilter接口的类,可以自定义规则,比说前缀、后缀或者其他规则,枚举的同时将我们的过滤器作为参数,这样我们就可以匹配到指定条件的文件,然后删除即可 android.support.annotation.NonNull; import android.text.TextUtils; import android.util.Log; import java.io.File; import java.io.FilenameFilter xpf on 2017/12/25 :) * Function:以xxx开头或后缀的文件名的过滤器 */ class DeleteFileFilter implements FilenameFilter
jdk1.8.0_60\\src\\java\\lang"); //取出java文件的字符串数组 String[] javasname=directory.list(new FilenameFilter (){ //匿名内部类实现FilenameFilter接口 private boolean isJava(String filename){
接着,我们再看一个检索目录文件的方法: public String[] list(FilenameFilter filter) { String names[] = list(); if 而这个 FilenameFilter 接口的定义却是如此简单: public interface FilenameFilter { boolean accept(File dir, String File file = new File("C:\\Users\\yanga\\Desktop\\test"); String[] list = file.list( new FilenameFilter } ); for (String str : list){ System.out.println(str); } 这里呢,我们使用匿名内部类创建一个 FilenameFilter 最后输出结果如下: 3.txt 4.txt 当然,File 类中还提供了两个「变种」list 方法,例如: public File[] listFiles() public File[] listFiles(FilenameFilter