【问题标题】:Find files with matching directory and filename查找具有匹配目录和文件名的文件
【发布时间】:2016-08-10 19:49:46
【问题描述】:

我目前必须找到具有这些模式的文件并进行处理,但我找不到任何可以帮助我匹配完整目录+我需要探索的文件的文件名的东西

这是我需要使用的完整目录的示例。

/logs/xxx/production/jboss/instance*/xxx-production-zzzz*/xxx-production-zzzz*-XXX-Metrics.log

提前致谢。

【问题讨论】:

  • 你是如何尝试任何东西的?仅仅要求代码在这个网站上效果不佳...
  • 这是否总是您要访问的文件,那么您可能只需执行 "String".contains("xxx-production-zzzz*-XXX-Metrics.log")并拉出你的文件。但正如@BoristheSpider 所提到的。尝试一些东西并提供一个错误或一段代码,以便更正或改进它。
  • @BoristheSpider 我尝试搜索多个函数和逻辑以在匹配的目录中查找匹配的文件,但我只能找到在预设目录中查找文件的方法。
  • 尝试谷歌搜索“java查找文件通配符”,那里有很多示例和选项。

标签: java io


【解决方案1】:

为这种情况找到了最佳解决方案。 必须从 apache 导入 ant.jar。

                logs = new ArrayList<File>();               
                String basedir = "/logs/xxx/production/jboss";
                String[] include = {"pvmk*/xxx-production-zzzzz*/xxx-production-zzzzz*-XXX-Metrics.log"};
                System.out.println(new Timestamp(System.currentTimeMillis()));
                System.out.println("Reading files...");
                DirectoryScanner scanner = new DirectoryScanner();
                scanner.setIncludes(include);
                scanner.setBasedir(basedir);
                scanner.setCaseSensitive( true );
                scanner.scan();
                String[] files = scanner.getIncludedFiles();
                for (String file : files) {
                    System.out.println("Loading file: " + file );
                    File log;
                    log = new File(new String ("/logs/xxx/production/jboss/" + file));
                    logs.add(log);
                }

【讨论】: