我正在尝试从网站解析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。或者,我可以添加一个" \ n"在我的Buffered Reader" in"每次只是为了让while循环破坏而不是无限期挂起?
任何帮助都将不胜感激。
答案 0 :(得分:2)
好的,这里应该是您正在寻找的。
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();
}
编辑,在您的情况下,因为您似乎正在进行webapp测试,我相信WebDriverWait可能会满足您的需求。
答案 1 :(得分:1)
事实并非如此。如果基础流已到达输入结束,BufferedReader.readLine()将不会阻止。它将返回null。请参阅http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()。
如果您的方法陷入困境,还有另一种解释。
仔细检查所有异常处理和流关闭逻辑。