使用通配符我想處理目錄中的文件。如果指定了通配符,我想處理那些匹配通配符字符的文件,如果未指定,我將處理所有文件。這裏是我的代碼使用通配符(java)過濾文件
List<File> fileList;
File folder = new File("Directory");
File[] listOfFiles = folder.listFiles();
if(prop.WILD_CARD!=null) {
Pattern wildCardPattern = Pattern.compile(".*"+prop.WILD_CARD+"(.*)?.csv",Pattern.CASE_INSENSITIVE);
for(File file: listOfFiles) {
Matcher match = wildCardPattern.matcher(file.getName());
while(match.find()){
String fileMatch = match.group();
if(file.getName().equals(fileMatch)) {
fileList.add(file); // doesn't work
}
}
}
}
else
fileList = new LinkedList<File>(Arrays.asList(folder.listFiles()));
我無法將匹配通配符字符的文件放在單獨的文件列表中。請幫助我修改我的代碼,以便可以將所有匹配通配符字符的文件放在單獨的文件列表中。這裏我在我的正則表達式中連接prop.WILD_CARD,它可以是任何字符串,例如如果通配符是測試,我的模式是。 測試(。)?。csv。我想存儲與此通配符匹配的文件並將其存儲在文件列表中。
我猜你的模式是不正確的。你必須顯示你期望它匹配的模式和文件名 –
@IngoKegel沒有我的模式是正確的,它的工作原理。如果測試我的模式是。* test(。*)?.csv,prop.WILD_CARD可以是任何東西。我想存儲與此通配符匹配的文件並將其存儲在文件列表中 –
第一件事是您的'fileList'未初始化。第二個是在比較之前將'file.getName()'和'fileMatch'輸出到控制檯。 – svz