读取文件时如何在文件名中使用通配符

How to use wildcards in filenames when reading in files

我正在开发一个将读入 SystemOut.Log 文件并处理它们的应用程序。有时归档文件的命名可能略有不同,例如 SystemOut_10:20_09/07/2021-10:45_09/07/2021.Log。它始终采用 SystemOut(此处有更多文本).Log.

的形式

我稍微阅读了一下,偶然发现了通配符,得出的结论是,如果我将 SystemOut*.Log 作为文件名传递到我的应用程序中,它就可以工作。但是我错了

我最初是通过这样的属性文件获取文件名的。

fileName=prop.getProperty("fileName");

然后我只是尝试在最后连接 *.Log

fileName=fileName+"*.Log";

当我打印出 fileName 时,它是“SystemOut*.Log”,但是当我将此文件名传递给我的读取文件的方法时,它不起作用,因为没有找到具有该名称的文件。

我是在代码中犯了错误还是只是误解了通配符的工作原理?谢谢

尝试FileUtils from Apache commons-io(listFiles 和 iterateFiles 方法): 您需要的代码是

File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("*.Log");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
   System.out.println(files[i]);
}