如何 return 文本文件中的特定行?

How to return specific line from text file?

在 "while" 条件下它显示正确的行,但是当我尝试在 "while" 之外显示同一行时它显示我的文本文件的最后一行。

public String path() throws FileNotFoundException { 

     Scanner s = null;
        String str;
    try {
      s = new Scanner(new BufferedReader(new 
    FileReader("src/main/resources/linda.txt")));
            do{
                str=s.next();
                if((s.hasNext(("get:"))||s.hasNext(("post:")) || s.hasNext(("put:")) || s.hasNext(("delete:"))))
                {
                    System.out.println(str);
                }
            }while(s.hasNext());
        }
        finally{
            if (s != null) {
        }

}               System.out.println(str);

            return str;

}

我希望这段代码的输出是
fraudcheck/ :fraudcheck/:, 但实际输出是 fraudcheck/: foo:

这是我的文本文件

openapi: "3.0.0"
     info:
        title: Simple API overview
           version: 2.0.0
            paths:
             fraudcheck/:
           get:
           operationId: listVersionsv2
    summary: List API versions
  responses:
    '200':
      description: |-
        200 response
      content:
        application/json:
          examples: 
            foo:

do-while 循环运行到文件末尾。

遇到匹配的行后,使用 break 退出循环。

您可以定义新变量 String result 并在达到理想条件时将行存储在其中然后输出此 variable.But 循环的执行将继续并且效率不高.

String result;
........
 if((s.hasNext(("get:"))||s.hasNext(("post:")) || s.hasNext(("put:")) || s.hasNext(("delete:"))))
                {
                    result = str;
                    System.out.println(str);
                }

.......
 System.out.println(result);

因此,如果您只需要一行,那么在条件块的末尾放置 break 会更有效

if((s.hasNext(("get:"))||s.hasNext(("post:")) || s.hasNext(("put:")) || s.hasNext(("delete:"))))
                {
                    System.out.println(str);
                     break;
                }

在这种情况下,当条件为真时循环停止,变量 str 将具有所需行的值。