1

我有一个 java 类,我想读取名称以“home-search-log.log”开头的文件。所以我写了这段代码。

  File dir = new File("D:\\");
   File[] foundFiles = dir.listFiles(new FileFilter() {
    public boolean accept(File file) {

        return Pattern.compile("^(home-search-log.log)").matcher(file.getName()).matches();
    }
   });
   for (File file : foundFiles) {
       System.out.println(file.getName());
   }

但它只返回一个具有给定名称的文件。我的另一个文件的名称是“home-search-log.log.2013-04-12”,但此模式不返回它。我哪里错了?

4

4 回答 4

2

我认为以下代码可能会更好:

return file.getName().startsWith("home-search-log.log");
于 2013-04-16T07:59:06.787 回答
1

试试下面的正则表达式。

System.out.println("home-search-log.log.2013-04-12".matches("^home-search-log.*"));
于 2013-04-16T08:07:15.477 回答
0

使用如下;

"home-search-log.log((.\\d[4]-\\d[2]-\\d[2])?)"
于 2013-04-16T08:01:22.643 回答
0

尝试这样的事情:

"^(home-search-log\\.log.*)"

首先,您需要转义正则表达式中使用的特殊字符(“-”,“.”)并添加末尾以指定您要匹配任何内容“。*”所以在这种情况下,它应该匹配来自“home-search-”的任何内容log.log”到“home-search-log.logsomething”

于 2013-04-16T07:58:57.273 回答