现在要求输入一个文件的目录,之后将里面所有的备份文件删除,备份文件都是以“.bak”或".BAK"结尾
8 {2 d0 t' T8 B4 a- @2 ~$ } package TestFile;; z# p+ r+ V* l& ^1 _
import java.io.File;( v5 v: k1 V+ f) F$ o! f
import java.io.FileFilter;. u. R l" \2 S- a* W% L* l8 e
/**
3 O2 W. p3 q/ x0 Z *- j; U t( d$ Q7 ~6 [
* 用于过滤以.bak结尾或包含.bak的文件4 }1 W$ j- ?- w( s4 e
* 返回值的含义是 当包含该字符串时返回true
9 ~+ S: Z) i% ]: w% w& q+ | */
( o8 |; p) n4 C3 x7 i+ U9 u# r public class ListFilter implements FileFilter{' i! j6 m+ v/ Q! Z( C
@Override" R( `0 _; N* x; q6 X! Y* W" P
public boolean accept(File file) {
: ]2 D. V0 d6 c; ~1 _9 N/ [ //测试指定的文件(夹)是否应该包含在指定的列表中(就是测定作为过滤的条件是否满足)
) Z+ _: s$ H. s0 \8 |8 Z: i /*
# k/ |: t/ k" Y9 N9 a * 如果是目录的话,直接返回true 表示是满足条件的一情况
* `- K0 P3 D8 N, o) K0 O( T7 t7 S */
7 L6 U) t" T, g4 m; w, F( g if(file.isDirectory()) return true;/ T& O/ ^# Z6 J# S7 r0 `
/*0 |% F; a- ?* {, ~1 n( x0 d
* 如果不是目录的话,通过判断在其名字里是否含有规定的字符,( |# f5 w5 P0 R7 D1 T% K# F' S
* 因为string的index方法在不满足条件(不含有指定的字符)是返回-14 J( T. I1 V. j( n: k/ V
* 所以以此来确定是否满足条件
" x1 O- X, C8 ^0 c, W */
\0 E- @) ^/ g& U: i& _) \ String name=file.getName();
# R Q* e/ ?' X+ L- c, C /*
9 \' P6 Z1 R9 P * int index=name.indexOf(".bak");
$ @# v1 X8 p! y/ |) c2 o * return index!=-1;+ k: j; U9 x5 x. L
* 这种方法不安全,可能会删除文件名中还含有.bak的文件,备份文件还可以用.BAK结尾% U+ v7 [& G* z P6 v J6 W: R3 f! x
*/
4 B) _6 K' s% |* V! _ return name.endsWith(".bak")||name.endsWith(".BAK");3 x) |8 a; W& y' Y
}
6 O! e) m4 _, M# C8 E }$ W$ K$ o- Y' D: j+ x
使用此类+ T3 U" n! I+ l
package TestFile;
8 E0 q! R, i7 W% U4 p import java.io.File;
5 j- g5 f4 o, p& V% y1 R; b /**
+ X" F+ E0 h N% V3 y' c * @author Administrator
. ~1 u, Y' ^( m * 涉及到递归调用
$ W' m* D! i+ U$ H */
6 H4 x/ g* G C+ C' j& ? public class BakDelete{$ o! x5 V, v* w3 [* V
public static void main(String args){/ g) U4 F/ h; p% a, l0 B/ h$ F7 u8 B
BakDelete bd=new BakDelete();2 a; X0 E0 T$ i* i
bd.listBakFile(new File("E:“"));" \! ^6 m1 b/ @8 t6 G4 t1 x
}
0 Y/ V( f$ t- _- Z public void listBakFile(File file){; r9 R; ]& |7 W! N3 F; @) M
File fs=file.listFiles(new ListFilter());9 Q2 I9 r7 {* y, u5 c- N7 t) ]( Q
for(int i=0;i |