現(xiàn)在要求輸入一個文件的目錄,之后將里面所有的備份文件刪除,備份文件都是以“.bak”或".BAK"結(jié)尾
package TestFile;
import java.io.File;
import java.io.FileFilter;
/**
* @author 王業(yè)平
* 用于過濾以.bak結(jié)尾或包含.bak的文件
* 返回值的含義是 當(dāng)包含該字符串時返回true
*/
public class ListFilter implements FileFilter{
@Override
public boolean accept(File file) {
//測試指定的文件(夾)是否應(yīng)該包含在指定的列表中(就是測定作為過濾的條件是否滿足)
/*
* 如果是目錄的話,直接返回true 表示是滿足條件的一情況
*/
if(file.isDirectory()) return true;
/*
* 如果不是目錄的話,通過判斷在其名字里是否含有規(guī)定的字符,
* 因為string的index方法在不滿足條件(不含有指定的字符)是返回-1
* 所以以此來確定是否滿足條件
*/
String name=file.getName();
/*
* int index=name.indexOf(".bak");
* return index!=-1;
* 這種方法不安全,可能會刪除文件名中還含有.bak的文件,備份文件還可以用.BAK結(jié)尾
*/
return name.endsWith(".bak")||name.endsWith(".BAK");
}
}
使用此類
package TestFile;
import java.io.File;
/**
* @author Administrator
* 涉及到遞歸調(diào)用
*/
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].delete();
}else{
//System.out.println(fs[i].getAbsolutePath());
listBakFile(fs[i]);
}
}
//System.out.println(fs.length);
}
}
posted on 2009-04-23 13:54
王業(yè)平 閱讀(1241)
評論(7) 編輯 收藏