现在要求输入一个文件的目录,之后将里面所有的备份文件删除,备份文件都是以“.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].delete(); }else{ //System.out.println(fs[i].getAbsolutePath()); listBakFile(fs[i]); } } //System.out.println(fs.length); } } |
【编辑推荐】
- 刚刚过了SCJP,分享我的经验体会!
- 菜鸟入门篇:如何迅速获取Java认证?
- JAVA考试认证:SCJP310-035考试心得