Java File类学习笔记4:自定义一个类,过滤指定扩展名的文件
来源:互联网 发布:种植牙费用 知乎 编辑:程序博客网 时间:2024/06/11 01:22
一、FilenameFilter介绍
java.io.File类提供了四个方法用于列举某个路径下的文件和目录,但不会递归列举子目录下的内容
其中两个是列举路径下的所有文件和目录。
(1)String[]files = f.list();
(2)File[]files = f.listFiles();
另外两个是列举路径满足指定过滤器的文件和目录。
(1)String[]fs = f.list(FilenameFilter filter);
(2)File[]fs = f.listFiles(FileFilter filter);
java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件;
FilenameFilter用来把符合要求的文件或目录返回;
二、文件名过滤器一般用法
1.实现FilenameFilter接口;
2.覆写accept方法boolean accept(File dir,String name); //dir表示文件的当前目录,name表示文件名;
三、实例
自定义一个类,继承FileNameFilter类,获得某一目录下所有指定扩展名的文件。
方法一:
/** * 说明: * 自定义FilterByJava类,过滤指定扩展名的文件 * */ import java.io.File;import java.io.FilenameFilter;public class FilterByJava implements FilenameFilter {private String ext; // ext为需要过滤的条件,比如如果ext =".jpg",则只能返回后缀为jpg的文件public FilterByJava(String ext) {this.ext = ext;}public boolean accept(File dir, String name) { // 返回true的文件则合格return name.endsWith(ext);}}
方法二:
FilenameFilter是一个接口,所以需要写一个实现类来实现该接口。我希望实现了该接口的类,可以过滤多种文件类型。示例代码如下:
package com.daxiang.filter;import java.io.File;import java.io.FilenameFilter;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class FileFilterTool implements FilenameFilter {List<String> types;protected FileFilterTool() {types = new ArrayList<String>();}protected FileFilterTool(List<String> types) {super();this.types = types;}public boolean accept(File dir, String filename) {// TODO Auto-generated method stubfor (Iterator<String> iterator = types.iterator(); iterator.hasNext();) {String type = (String) iterator.next();if (filename.endsWith(type)) {return true;}}return false;}/** * 添加指定类型的文件。 * * @param type 要添加的文件类型,如".jpg"。 */public void addType(String type) {types.add(type);}}
在以上代码中,为FilenameFilter对象添加了一个成员变量types,以接收指定类型。方法addType(Stringtype)是为过滤器添加需要过滤的文件类型,其内容为文件的后缀名,如".jpg"。
public boolean accept(File dir, String filename)是实现FilenameFilter接口时要重写的方法,用循环迭代判断文件名的后缀名是否为types中的类型,是则返回true。当types中没有该文件的后缀名时,返回false。
在定义的类中,构造方法写了两个,一个是不带参数的,此时自己创建一个ArrayList对象,用以储存文件类型。另一个是带List对象参数的,该对象由用户创建。
使用时代码如下:
package com.daxiang.filter;import java.io.File;public class Test {public static void main(String args[]){String path = "d:\\daxiang";File file = new File(path); FileFilterTool filenameFilter = new FileFilterTool(); filenameFilter.addType(".jpg"); filenameFilter.addType(".mp3"); File[] files = file.listFiles(filenameFilter); for (int i = 0; i < files.length; i++) { System.out.println(files[i].getName()); } }}
- Java File类学习笔记4:自定义一个类,过滤指定扩展名的文件
- Java File类学习笔记1:运用FileNameFilter类,获得某一目录下所有指定扩展名的文件
- Jsoup学习笔记6之File类操作文件:获取指定目录下面,指定扩展名(.saz)的文件,并在对应的文件夹下生成同名的csv文件。
- java File类文件过滤
- 建立一个指定扩展名的文件列表
- Java I/O之FilenameFilter类列举出指定路径下某个扩展名的文件
- java文件访问File类及其过滤
- 过滤上传文件的扩展名
- java获取指定目录下所有指定扩展名的文件
- Java File类学习笔记3:自定义一个类,读取文本内容到字符串
- 建立一个指定扩展名的文件的列表
- 获取指定扩展名的文件
- Java流:将指定目录和子目录下的指定扩展名(.java)的文件所在路径写到一个文件中,形成一个文件清单。
- win7基础 cmd del+指定文件名.扩展名 删除指定文件夹下的一个指定文件
- 【笔记】java获取文件扩展名
- 扩展名文件过滤
- 4.2.2 指定文件扩展名的验证
- Delphi 指定Dll文件的扩展名
- X-code beta 开发iWatch项目,运行没有错误,但是某些操作一点就崩,而且找不错误的原因场景一
- StringUtils工具类用法
- Android命令
- opencv学习(一)书本《学习Opencv》(中文版)的第二章的10个入门样例的分析
- poj 1797 Heavy transportation 最短路
- Java File类学习笔记4:自定义一个类,过滤指定扩展名的文件
- SPOJ COT - Count on a tree树链剖分加主席树
- spring mvc controller取到的中文参数是乱码
- Java:按值传递还是按引用传递详细解说
- iOS button 同时设定图片和文字
- Makefile经典教程(掌握这些足够)
- qt 编程 hello-world
- Linux基础学习-01
- 图像处理那张熟悉的面孔——Lena