a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 110|回复: 0

[其他] java认证:关于FileFilter使用的经验之谈

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
现在要求输入一个文件的目录,之后将里面所有的备份文件删除,备份文件都是以“.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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 18:08 , Processed in 0.169979 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表