黑马程序员技术交流社区
标题:
FilenameFilter
[打印本页]
作者:
黑马—王宁
时间:
2012-4-18 22:53
标题:
FilenameFilter
FilenameFilter的方法?以及这个接口中的方法具体怎么使用?详解,谢谢
作者:
liuyang
时间:
2012-4-18 23:03
FilenameFilter接口,能够过滤得到指定类型的文件或者目录,其中必须重写accept(File file,String path)方法
public class DirFilter implements FilenameFilter{
private String type;
public DirFilter(String tp){
this.type=tp;
}
public boolean accept(File fl,String path) throws Exception{
File file=new File(path);
String filename=file.getName();
return filename.indexOf(type)!=-1;
}
}
具体应用方法:File假如是一个Directory,可以通过list()方法得到这个目录下所有的文件和目录的名称数组,list()方法,一种是没有参数,一种是实现FilenameFilter接口的参数,例如要获得一个指定目录下的所有的java文件,就要使用第二种带参数的list()方法
public class Test{
public static void main(String[] args){
try{
//指定目录(“.”表示当前目录)
File dir=new File(".");
String[] names;
//获得所有java文件
DirFilter filter=new DirFilter(".java");
names=dir.list(filter);
//打印所有java文件名称
for(int i=0;i<names.length;i++){
System.out.println("i:"+i+" name:"+names[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
其中这里还可以将DirFilter类作为Test的一个匿名内部类来实现,例如:
public class Test{
//type:必须声明为final类型,作为一个匿名内部类,访问的变量都必须声明为final类型
public static FilenameFilter filter(final String type) throws Exception{
return new FilenameFilter(){
public boolean accept(File file,Stirng path){
String filename=new File(path).getName();
return filename.indexOf(type)!=-1;
}
};
}
public static void main(String[] args){
try{
File file=new File(".");
String names[];
names=file.list(filter(".java");
for(int i=0;i<names.length;i++){
System.out.println("i:"+i+" filename:"+names[i]);
}
catch(Exception e){
e.printStackTrace();
}
}
}
作者:
周海诚
时间:
2012-4-29 16:46
File类和FilenameFilter接口的使用
方法:
import java.io.*;
File f=new File(".");//File类实例,相对于当前目录
String [] filelist=f.list(new Myfilefilter());//返回当前f代表的目录下的文件和目录名称列表(不含路径),Myfilefilter()是用以过滤文件的类。他必须实现FilenameFilter接口;
class Myfilefilter implements FilenameFilter
{
public Myfilefilter()
{
System.out.println("Myfilefilter now construct");
}
public boolean accept(File f,String s)//File.List方法会为每个文件/子目录调用accept方法,参数s将传入文件路径全名
{
String currentFilename=new File(s).getName();//只得到文件名/目录名
if(currentFilename.equals("a.txt")==true||currentFilename.equals("新建文件夹"))//过滤条件
{
System.out.println("hahahaha");
return true;//返回true,则保留在结果中
}
else
{
return false;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2