码迷,mamicode.com
首页 > 编程语言 > 详细

Java File类学习笔记4:自定义一个类,过滤指定扩展名的文件

时间:2015-08-04 13:38:34      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:java   java学习   

自定义一个类,继承FileNameFilter类,获得某一目录下所有指定扩展名的文件。

方法一:

/**
 * 说明:
 * 自定义FilterByJava类,过滤指定扩展名的文件
 * 
 */
import java.io.File;
import java.io.FilenameFilter;

public class FilterByJava implements FilenameFilter{

	private String ext;

	public FilterByJava(String ext) {
		this.ext = ext;
	}
	
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		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 stub
		for (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   java学习   

原文地址:http://blog.csdn.net/cjp0326/article/details/47274049

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!