Java将文件中的行与String进行比较

时间:2013-12-22 11:25:30

标签: java file bufferedreader readline filereader

我在Java中遇到一个奇怪的问题... 我想比较这个文件的每一行和一个字符串(主变量),但是(我不知道为什么),while循环总是比较文件的第一行而忽略第二行,第三行......

以下是代码:

fr = new FileReader (file);
inf = new BufferedReader(fr);
String l;
while ((l=inf.readLine()) != null) {
    if (host.contains(l))
        return true;
    else
        return false;
}

任何帮助将不胜感激......

4 个答案:

答案 0 :(得分:2)

两个问题:

  1. 您正在主机名中找到这一行 - 就像在针中找到一个大海捞针 - 逆转测试
  2. 无论条件的结果如何,您只需测试一次后返回,所以只测试第一行
  3. 相反,试试这个:

    String l;
    while ((l=inf.readLine()) != null)
        if (l.contains(host))
            return true;
    return false;
    

答案 1 :(得分:1)

应该是host.equals(l),或者可能是l.contains(host)。这取决于你想做什么。

答案 2 :(得分:1)

由于循环中的if / else语句,它只测试文件中的第一行。两个分支都会导致返回,从而停止处理文件内容的其余部分。

也许你应该在文件结束后返回false?

fr = new FileReader (file);
inf = new BufferedReader(fr);
String l;

while((l=inf.readLine())!=null){
    if (host.contains(l))
        return true;
}

return false; 

答案 3 :(得分:0)

假设您正在查找文件中的主机字符串。你可以这样做。

public boolean contains(Reader in, String word) throws IOException {
    BufferedReader inf = new BufferedReader(in);
    String l;
    boolean found = false;
    while((l=inf.readLine())!=null){
        if (l.contains(word)) {
            found = true;
            break;
        }
    }
    return found;
}