使用 BufferedReader 转到文件中的下一行

Go to next line in a file with BufferedReader

我正在尝试从文件中读取行。为此,我使用以下代码:

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;
}

}

编辑:

以下是工作代码:

while (count < numTweets) {
  try {
    try (InputStream fis = new FileInputStream(fileName);
        InputStreamReader isr = new InputStreamReader(fis, Charset.forName("Cp1252"));
        BufferedReader br = new BufferedReader(isr)) {


      //Calls static method GetFacts from the FactGeneration class.
      FactGeneration.getFacts();
      tweet = br.readLine();
      while (tweet != null) {

        //sendTweet accesses the TwitterAPI and posts the tweet.
        sendTweet(tweet);
        System.out.println("tweeting:" + tweet);
        try {
          //Pauses the thread for the given amount of time.
          int sleepTime = 18000; //in milliseconds.
          System.out.printf("Sleeping for %d seconds", sleepTime / 1000);
          Thread.sleep(sleepTime);
        }
        catch (InterruptedException e) {
          e.printStackTrace();
        }
        //moves to the next line in the file.
        tweet = br.readLine();
      }
    }
  }
  catch (IOException e) {
    e.printStackTrace();
  }
  count += 1;
  if (count == numTweets) {
    System.out.println("Tweet limit reached");
  }
}

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 是否为空