java认证:关于FileFilter使用的一点心得Java认证考试
文章作者 100test 发表时间 2009:07:07 21:13:21
来源 100Test.Com百考试题网
现在要求输入一个文件的目录,之后将里面所有的备份文件删除,备份文件都是以“.bak”或".BAK"结尾
package TestFile.
import java.io.File.
import java.io.FileFilter.
/**
*
* 用于过滤以.bak结尾或包含.bak的文件
* 返回值的含义是 当包含该字符串时返回true
*/
public class ListFilter implements FileFilter{
@Override
public boolean accept(File file) {
//测试指定的文件(夹)是否应该包含在指定的列表中(就是测定作为过滤的条件是否满足)
/*
* 如果是目录的话,直接返回true 表示是满足条件的一情况
*/
if(file.isDirectory()) return true.
/*
* 如果不是目录的话,通过判断在其名字里是否含有规定的字符,
* 因为string的index方法在不满足条件(不含有指定的字符)是返回-1
* 所以以此来确定是否满足条件
*/
String name=file.getName().
/*
* int index=name.indexOf(".bak").
* return index!=-1.
* 这种方法不安全,可能会删除文件名中还含有.bak的文件,备份文件还可以用.BAK结尾
*/
return name.endsWith(".bak")||name.endsWith(".BAK").
}
}
使用此类
package TestFile.
import java.io.File.
/**
* @author Administrator
* 涉及到递归调用
*/
public class BakDelete{
public static void main(String[] args){
BakDelete bd=new BakDelete().
bd.listBakFile(new File("E:\")).
}
public void listBakFile(File file){
File[] fs=file.listFiles(new ListFilter()).
for(int i=0.i<.fs.length.i ){
if(fs[i].isFile()){
System.out.println(fs[i].getAbsolutePath()).//打印文件绝对路径
fs[i].0delete().
}else{
//System.out.println(fs[i].getAbsolutePath()).
listBakFile(fs[i]).
}
}
//System.out.println(fs.length).
}
}
更多优质资料尽在百考试题论坛 百考试题在线题库