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

4jb9z9bj  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(496)

我正在开发一个可以读取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”,但当我将此文件名传递给读取文件的方法时,它不起作用,因为找不到具有该名称的文件。
我是在代码中出错,还是只是误解了通配符的工作原理?谢谢

fjaof16o

fjaof16o1#

尝试ApacheCommonsIO中的fileutils(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]);
}

相关问题