现在要求输入一个文件的目录,之后将里面所有的备份文件删除,备份文件都是以“.bak”或".BAK"结尾$ ^* i; n! _% a3 j9 E0 X' q) v/ C
package TestFile;- e/ Y! y: e- T$ `: \
import java.io.File;
3 g8 c j' G& w8 E p8 z* I9 e import java.io.FileFilter;2 z1 I4 ]/ s; Q" l* i
/**
7 a+ r! C# u( ]9 R' ` *
# V' P0 Z2 z* F% K5 T+ |- ] [ * 用于过滤以.bak结尾或包含.bak的文件- ?2 B2 [4 n3 b7 L _
* 返回值的含义是 当包含该字符串时返回true
/ b7 ~- g4 c& |/ A& B1 n, J! g */
3 e4 |" z4 l2 W4 d( A5 g& a public class ListFilter implements FileFilter{ K, @* j, p1 Y" B7 S& q; l6 {
@Override, v# u. m8 C: \
public boolean accept(File file) {
2 g5 d& o) H; D; a //测试指定的文件(夹)是否应该包含在指定的列表中(就是测定作为过滤的条件是否满足)4 s% d' P6 r o; z, w
/*
/ \7 ~% f4 m' k# ]( i( c * 如果是目录的话,直接返回true 表示是满足条件的一情况
( @) K3 N1 j, V# |' c- l O */9 ^$ x! e+ _% P1 S* W
if(file.isDirectory()) return true;
: O; g$ T( n: c, z# y8 O /*6 w6 p& p4 P5 Y# Q0 B$ ~: |
* 如果不是目录的话,通过判断在其名字里是否含有规定的字符,7 ^+ I8 k" C2 m% C3 }" I( E: [/ f
* 因为string的index方法在不满足条件(不含有指定的字符)是返回-1& n" F# O$ p3 W8 ~1 N* I2 d" N
* 所以以此来确定是否满足条件
+ i. v. l/ X O- F2 A: s" ?8 b */; S( `. T' {$ C9 q4 R- }7 v
String name=file.getName();
5 k A* i* z8 j7 V2 [4 k /*: {9 {1 V% x1 C6 G
* int index=name.indexOf(".bak");
9 X8 Y3 W& _) A% i+ s3 A * return index!=-1;' w2 \2 p% P2 Y0 t- t
* 这种方法不安全,可能会删除文件名中还含有.bak的文件,备份文件还可以用.BAK结尾
+ }$ B5 `4 O( ~ */
* @8 o% c( h2 e8 |, x% U n% C return name.endsWith(".bak")||name.endsWith(".BAK");4 I. R$ f; ]7 t# R/ o
}& b; o3 o; T& B( E9 O: p' R
}
1 G" v& M: Z6 i9 @' C( w7 @ 使用此类
" p/ G* t1 i# a! y7 k package TestFile;/ y9 `) j; [5 J7 T
import java.io.File;
( ^; b( X) y6 _8 c. J7 V ` /**9 ]% W/ z/ H7 ^* D+ t
* @author Administrator( e+ d M6 N! b* C9 T- ]4 m7 S
* 涉及到递归调用
# I+ f6 K' `+ g, a */
. B2 M& d2 f* l. Q$ ^) E+ P. M9 k6 }0 y public class BakDelete{' H8 U5 _! L! g# ]" d7 y# X3 D
public static void main(String args){
( c5 u6 r3 @8 ?9 M* Z BakDelete bd=new BakDelete();
# A+ i/ d3 \- Y3 D bd.listBakFile(new File("E:“"));( w0 R& }! s& {9 t
}( U- S3 @) j2 V+ z8 V. l
public void listBakFile(File file){ J* a4 a2 T' m
File fs=file.listFiles(new ListFilter());
8 ?$ _7 U+ x' m: j( A: r for(int i=0;i |