我有一个表达式数组列表和一个对这些文件进行筛选的文件数组列表;这个过滤器也将是Arraylist ->。
假设我有一个数组列表,其中包含4个文件文件,例如文件文本文件,我有以下3个表达式/条件:
X,O,Z
为了将其中一个文件移动到筛选器数组列表中,必须在文件中验证这三个条件。
ArrayList<String> XpathExpression= new ArrayList<String>();
ArrayList<File> FilterdFiles= new ArrayList<File>();
File folder = new File("Path for many files");
File[] files = folder.listFiles();
for (File file : files) {
if(file.isFile() && file.getName().endsWith(".txt")) {
//Parser here
/*******Get attribute values******/
for(String xpathExp: XpathExpression) {
if(what I have to write in the if statment to check that the three conditions are valid for the current file so i can add it to the FilterdFiles.) {
FilterdFiles.add(file);
}
else
continue;
} 为了检查这三个条件对当前文件是否有效,我必须在if语句中写入,这样我就可以将它添加到FilterdFiles中。
发布于 2022-01-09 01:04:24
我不能根据您的代码给出解决方案,因为它不包含足够的信息。但是我可以给你一个例子来帮助你解决你的问题。
下面的代码将从包含其他数组中所有字符串的列表中添加字符串。我使用匹配的标志来跟踪火柴。
import java.util.*;
public class Main{
public static void main(String[] args) {
String[] files = {"cat and dog", "dog", "fish dog cat", "apple", "peach"};
String[] expressions = {"dog", "cat"};
ArrayList<String> filtered = new ArrayList<>();
for(String f: files){
boolean matched = true;
for(String e: expressions){
if (!f.contains(e)) {
matched = false;
break;
}
}
if (matched) filtered.add(f);
}
System.out.println(filtered);
}
}输出:
[cat and dog, fish dog cat]发布于 2022-01-09 01:00:18
如果所有条件都必须匹配,则可以编写另一个类似于此的验证方法:
private boolean validate(File file, ArrayList<String> XpathExpression){
for(String xpathExp: XpathExpression){
boolean validateResult = validate file with xpathExp;
if(validateResult != true){
return false;
}
}
return true;
}如果validate(file, XpathExpression)返回true,则将文件添加到筛选数组列表中。或验证是否有任何xpathExp匹配:
private boolean validate(File file, ArrayList<String> XpathExpression){
for(String xpathExp: XpathExpression){
boolean validateResult = validate file with xpathExp;
if(validateResult == true){
return true;
}
}
return false;
}https://stackoverflow.com/questions/70636327
复制相似问题