[英]Need help in WildcardFileFilter in java
我必须从与给定模式之一匹配的文件夹中分离出这些文件。 我有一个包含这些模式的字符串数组。
我将此数组作为参数传递给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,因此可能会有一些小错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.