目录列示器--案例

目录列示器

本实例演示如何得到一个目录下的所有文件列表 .

1.       这里利用了 DirFilter 实现了 FilenameFilter 接口 , 因此必须继承 accept 的方法 .

2.       用到了匹配字符序列与正则表达式指定模式的类 Matcher,Pattern 所以要 java.util.regex 引入 .

实例程序 :<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

package javaio;

import java.io.*;

import java.util.*;

import java.util.regex.*;

 

public class DirList {

  public static void main(String[] args) {

    File path = new File("c:/");

    String[] list;

    if(args.length == 0){

      list = path.list();

    }

    else{

      // 这里将输入的参数作为过滤因子

      list = path.list(new DirFilter(args[0]));

    }

    for(int i = 0; i < list.length; i++){

      System.out.println(list[i]);

    }

  }

}

 

class DirFilter implements FilenameFilter {

  private Pattern pattern;

  public DirFilter(String regex) {

    pattern = Pattern.compile(regex);

  }

  public boolean accept(File dir, String name) {

    // 判断名为 name 的文件是不是符合过滤条件

    return pattern.matcher(new File(name).getName()).matches();/*matches() 尝试将整个区域 / 与模式匹配。 new File(name).getName() 得到 String 类的 name*/

  }

}

运行结果 :

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"><img height="469" alt="Image00003.jpg" src="http://www.blogjava.net/images/blogjava_net/mose2006/%E6%97%A5%E5%8E%86/Image00003.jpg" width="202" border="0"></lock></shapetype>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值