2014-01-07 1 views
0

У меня есть считыватель буфера, который читает текстовый файл, а затем сохраняет прочитанные данные в виде строки. Буферный считыватель находится в непрерывном цикле, который читает текстовый файл каждую секунду. Я хотел бы сделать Thread.sleep, если читатель буфера читает один и тот же текст два раза подряд.Stop BufferedReader, если тот же текст читается

Например, если считыватель буфера читает «foo», тогда, когда он снова запускается в следующую секунду, если он снова читает «foo», тогда поток засыпает на определенное количество времени.

У меня есть считыватель буфера внутри метода try, но я не знаю, как заставить его сделать выше.

Может ли кто-нибудь помочь в этом?

Благодаря

ответ

4

Keep след предыдущей строки читать в строковой переменной, которую можно инициализировать как пустая строка. Когда вы читаете в каждой строке, проверьте, является ли она 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; 
     } 
    }