作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须从与给定模式之一匹配的文件夹中分离出这些文件。我有一个包含这些模式的字符串数组。
我将此数组作为参数传递到 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/
我只想为音频文件设置一个过滤器,所以我写了这一行 fileChooser->setFileFilter(WildcardFileFilter("*.wav;*.aiff", "Audio Files"
我是一名优秀的程序员,十分优秀!