簡體   English   中英

Java-在運行readLine命令之前如何檢查BufferedReader是否包含換行符

[英]Java - How to check if BufferedReader contains line break before running readLine command

我正在嘗試從網站解析HTML,以獲取非常具體的數據。 以下方法讀取源並將其輸出為字符串,以供其他方法處理。

    StringBuilder source = new StringBuilder();
    URL url = new URL(urlIn);
    URLConnection spoof;
    spoof = url.openConnection();
    spoof.setRequestProperty( "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)" );

    BufferedReader in = new BufferedReader(new InputStreamReader(spoof.getInputStream()));
    String strLine = "";

    while ((strLine = in.readLine()) != null){
        source.append(strLine);
    }

    return source.toString();

我遇到的問題是,由於每次使用不同的urlIn參數多次調用此方法時,有時該方法會卡在readLine命令中。 我讀到這是因為readLine尋找換行符,如果BufferedReader對象由於某種原因不包含換行符,它將無限期地被卡住。

在運行readLine命令之前,有沒有辦法檢查我的BufferedReader對象是否包含換行符。 我嘗試使用if (in.toString().contains("\\n"))但始終返回false。 或者,是否可以每次在Buffered Reader“ in”對象的末尾添加“ \\ n”,以便while循環中斷並且不會無限期地掛斷?

任何幫助,將不勝感激。

好的,這應該是您想要的。

fis = new FileInputStream("C:/sample.txt");
reader = new BufferedReader(new InputStreamReader(fis));

System.out.println("Reading File line by line using BufferedReader");

String line = reader.readLine();
while(line != null){
    System.out.println(line);
    line = reader.readLine();
}           

了解更多: http : //javarevisited.blogspot.com/2012/07/read-file-line-by-line-java-example-scanner.html#ixzz3g4RHvy6V

根據您的情況進行編輯,因為好像您在進行webapp測試一樣,所以我相信WebDriverWait可以滿足您的需求。

這不是真的。 如果基礎流已到達輸入的末尾,則BufferedReader.readLine()將不會阻塞。 它將返回null。 請參閱http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()

如果您的方法陷入困境,則還有另一種解釋。

仔細檢查所有異常處理和流關閉邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM