Перейти к следующей строке в файле с BufferedReader - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь прочитать строки из файла. Для этого я использую следующий код:

try {
    String line;
    try (InputStream fis = new FileInputStream("AbsoluteFilePath");
        InputStreamReader isr = new InputStreamReader(fis, Charset.forName("Cp1252"));
        BufferedReader br = new BufferedReader(isr);) {
      FactGeneration.getFacts();
      while ((line = br.readLine()) != null) {
        br.readLine();
        function1(line);

Однако это не приводит к переходу на следующую строку в файле. Спасибо!

Редактировать: Для ясности я делаю твиттер-бота. Вся функция выглядит следующим образом: FactGeneration.getFacts () добавляет новую строку в файл, расположенный по адресу / AbsoluteFilePath

private static void tweetLines() {
String tweet;
int count = 0;
while (count < 10) {
  try {
    try (InputStream fis = new FileInputStream(
        "/AbsoluteFilePath");
        InputStreamReader isr = new InputStreamReader(fis, Charset.forName("Cp1252"));
        BufferedReader br = new BufferedReader(isr);) {
      FactGeneration.getFacts();
      while ((tweet = br.readLine()) != null) {
        sendTweet(tweet);

        try {
          int sleepTime = 18000;
          Thread.sleep(sleepTime);
        }
        catch (InterruptedException e) {
          e.printStackTrace();
        }

      }
    }
  }
  catch (IOException e) {
    e.printStackTrace();
  }
  count += 1;
}

}

1 Ответ

1 голос
/ 08 ноября 2019

readLine на самом деле читает строку, она делает это внутри условия цикла while, поэтому не читайте второй раз внутри цикла

String line;
try (InputStream fis = new FileInputStream("AbsoluteFilePath");
     InputStreamReader isr = new InputStreamReader(fis, Charset.forName("Cp1252"));
     BufferedReader br = new BufferedReader(isr);) {

    while ((line = br.readLine()) != null) {
        // do whatever with line

    }
}

Условие while имеет 2 шага, что позволяет в конце прочитать null и прекратить зацикливание

  • прочитать строку из файла и присвоить результат line
  • убедитесь, что line не равно нулю
...