gpt4 book ai didi

java - 在java中的WildcardFileFilter中需要帮助

转载 作者:行者123 更新时间:2023-11-30 04:00:47 30 4
gpt4 key购买 nike

我必须从与给定模式之一匹配的文件夹中分离出这些文件。我有一个包含这些模式的字符串数组。
我将此数组作为参数传递到 WildCardFilter 中,以便我可以分离出与数组中给定模式匹配的这些文件。我的代码如下。

String pat1="DailyExistingBusinessReport_*";
String pat2="*DailyNewExistingBusinessReport_.csv";
String pat3="*_EOD_PNL_Explained.*";
String pat4="ABC*XYZ.csv";
String str[]=new String[]{pat1,pat2,pat3,pat4};
FileFilter fileFilter = new WildcardFileFilter(str);
File dir = new File("\\C:\\Users\\ABC\\Desktop\\Myfiles");
File[] files = dir.listFiles(fileFilter);

for(File f :files){
System.out.println(f);
}

这会打印出与数组中给定模式匹配的文件名。但现在我的要求是,除了每个文件名之外,我还想要该文件匹配的模式的确切名称。知道我应该进一步添加什么代码来获取模式名称和文件名。

最佳答案

我检查了 API,但没有找到使用 FileFilter 执行此操作的方法。我建议创建一个过滤器列表并一一应用它们:

List<FileFilter> filters = new ArrayList<FileFilter>();
filters.add(new WildCardFileFilter("DailyExistingBusinessReport_*");
filters.add(new WildCardFileFilter("*DailyNewExistingBusinessReport_.csv");
filters.add(new WildCardFileFilter("*_EOD_PNL_Explained.*");
filters.add(new WildCardFileFilter("ABC*XYZ.csv");

File dir = new File("\\C:\\Users\\ABC\\Desktop\\Myfiles");
Map<FileFilter, List<File>> filemap = new HashMap<FileFilter, List<File>>();

for (File file: dir.listFiles()){
for(FileFilter filter: filters){
if(filter.accept(file)){
if(!filemap.containsKey(filter)){
filemap.put(filter, new ArrayList<File>());
}
filemap.get(filter).add(file);
}
}
}

之后,您应该有一个包含过滤器和应用该过滤器的文件列表的映射。我手头没有IDE,所以可能会出现一些小错误。

关于java - 在java中的WildcardFileFilter中需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026556/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com