使用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);

但是,它不会移动到文件的下一行。 谢谢!

编辑: 为了清楚起见,我正在制作一个Twitter机器人。整个功能如下所示: 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");
  }
}
mysetry 回答:使用BufferedReader转到文件的下一行

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是否不为空
本文链接:https://www.f2er.com/3135829.html

大家都在问