繁体   English   中英

如何从文本文件返回特定行?

[英]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 / :,但实际输出为欺诈检查/: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结果,并在达到所需条件时将行存储在其中,然后输出此变量。但是循环执行将继续并且效率不高。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM