繁体   English   中英

在Java中的WildcardFileFilter中需要帮助

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM