如何使用 BufferedReader 检查 csv 中是否存在多个条件字符串?

How to check if multiple conditions strings exist in the csv using BufferedReader?

我正在使用 BufferedReader 检查文件中是否存在多个字符串,我正在使用以下脚本:

int n = 41; // The line number
String line;
BufferedReader br = new BufferedReader(new FileReader(context.tfilelistdir)); 
for (int i = 0; i < n; i++)
{
    line = br.readLine();
    if (line.contains("$$WORDS$$ ABC") && line.contains("$$WORDS$$ XYZ"))
    {
        do something
    }
}

这里我需要检查字符串 $$WORDS$$ ABC $$WORDS$$ XYZ 是否都存在于 csv 文件中的不同 rows/cols 中。 BufferedReader 的行不接受 &&。它仅适用于 || (OR) 条件 BufferedReader 在不断读取记录时覆盖条目。

有什么方法可以检查 CSV 文件中是否存在这两个条件(存在字符串)?

如果子字符串在不同的行中,需要引入一些布尔标志来跟踪每个特定条件。

另外,最好使用try-with-resources确保file/reader资源正常关闭,并在读取过程中检查是否未到达文件末尾(然后br.readLine() returns null).

int n = 41; // The line number
String line;
try (BufferedReader br = new BufferedReader(new FileReader(context.tfilelistdir))) {
    boolean foundABC = false;
    boolean foundXYZ = false;
    int i = 0;
    while ((line = br.readLine()) != null && i++ < n) { // read at most n lines

        foundABC |= line.contains("$$WORDS$$ ABC"); // will be true as soon as ABC detected
        foundXYZ |= line.contains("$$WORDS$$ XYZ"); // will be true as soon as XYZ detected
        if (foundABC && foundXYZ) { // not necessarily in the same line
            //do something
        }
    }
}