如果读取相同的文本,则停止BufferedReader

时间:2014-01-07 22:55:58

标签: java bufferedreader java-io

我有一个缓冲读取器,用于读取文本文件,然后将读取的数据保存为字符串。缓冲读取器处于连续循环中,每秒读取文本文件。如果缓冲读取器连续两次读取相同的文本,我想做一个Thread.sleep。

例如,如果缓冲读取器读取“foo”,那么当它在下一秒再次运行时,如果它再次读取“foo”,则线程会休眠一段时间。

我在try方法中有缓冲读取器,但我不知道如何让它完成上述操作。

有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:4)

跟踪在String变量中读入的上一行,您可以将其初始化为空字符串。当您读入每一行时,检查它是否equals()到该变量中先前存储的行。如果是,请执行您想要执行的操作,例如Thread.sleep()。否则将当前行保存到该变量中。在代码中:

    BufferedReader reader = new BufferedReader(new FileReader("foo.txt"));
    String foo = "";
    String old = "";
    while((foo = reader.readLine()) != null) {
        if(foo.equals(old)) {
            System.out.println("Sleeping...");
            Thread.sleep(1000);
        } else {
            old = foo;
        }
    }