读取文件时如何在文件名中使用通配符
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]);
}
我正在开发一个将读入 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]);
}