【发布时间】:2011-04-24 12:58:00
【问题描述】:
我正在尝试通过 URLConnection 获取整个网页。
最有效的方法是什么?
我已经这样做了:
URL url = new URL("http://www.google.com/");
URLConnection connection;
connection = url.openConnection();
InputStream in = connection.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
StringBuffer html = new StringBuffer();
String line = bf.readLine();
while(line!=null){
html.append(line);
line = bf.readLine();
}
bf.close();
html 包含整个 HTML 页面。
【问题讨论】:
-
定义什么是你所说的“高效”。
-
mm,最好的方法。什么需要更少的时间和资源。我不是 IO 方面的专家,所以我很难评估替代方案。
-
我认为这是最好的方法,使用 StringBuffer 非常好并且有很大帮助,因为它创建的对象更少,我没有什么不同的。
-
您目前的瓶颈是什么?您想用 CPU 周期换取带宽吗?此方法不支持 gzip。
-
如果我没记错的话,
readLine()去掉了行分隔符,所以如果你没有明确地把它们放回去,你的输出就会把它们全部去掉。此外,如果这是 Java 1.5 或更高版本,请考虑使用StringBuilder而不是StringBuffer。
标签: java performance bufferedreader