使用正则表达式

时间:2015-04-26 12:24:15

标签: java regex java-io

以下是“Thinking in Java”的代码片段:

import java.io.*;
import java.util.*;
import java.util.regex.*;

public class DirList {
    public static void main(String[] args){
        File path = new File(".");
        String[] list;
        if(args.length == 0){
            list = path.list();
        }
        else{
            //System.out.println(args[0]);
            list = path.list(new DirFilter(args[0]));

        }

        Arrays.sort(list, new AlphabeticComparator());
        System.out.println(list.length);
        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);
        //System.out.println(pattern);

    }
    public boolean accept(File dir, String name) {
     // Strip path information, search for regex:
        return pattern.matcher(new File(name).getName()).matches();

    }
} ///:~

理想情况下,它应该列出当前目录中的所有.java文件,但事实并非如此。根据我的观察,如果我将C。*。java作为命令行参数传递,则数组'list'根本不包含任何元素。 我没有在这里包括AlphabeticComaparator课程;它只是按字母顺序对文件进行排序。

我是File I / O和Regular Expressions的新手;非常感谢我能得到的任何帮助。

1 个答案:

答案 0 :(得分:2)

从命令行,其中任何一个都可用于列出所有.java文件:

java DirList .*\\.java
java DirList '.*\.java'

如果您没有任何以C开头的java文件名,那么您将使用C。*。java。