我有这个代码用于阅读网页的源代码。此代码处于循环中并且它运行了很多次。但是大部分时间都没有完成它。例如,如果输出文件应该是180kb文本文件,我有180这意味着它是完整的,我也得到各种大小,如9kb,150kb,170kb,50kb等...我的意思是每10个循环它给我一个完整的页面,共10次,大约7次不完整的源文件。
URL site = null;
site = new URL("http://www.someurl/page/"+ i);
URLConnection yc = null;
yc = site.openConnection();
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
System.out.println("Page Starts : " + i );
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();
我已经读过有关过早EOF的信息。数据比处理速度慢,我想指出我的连接速度慢,我在win7-64上运行相同的代码,它给了我满分10分的3分。我在虚拟windows xp中运行eclipse,内存和处理能力较低,它让我的方式更好,大约有6个完成,但仍然给我错误。
我使用了抛出IOException并且它给了我这个错误并停止了代码:
Exception in thread "main" java.io.IOException: Premature EOF
at sun.net.www.http.ChunkedInputStream.readAheadBlocking(Unknown Source)
at sun.net.www.http.ChunkedInputStream.readAhead(Unknown Source)
at sun.net.www.http.ChunkedInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at SourceCodeExtractor.main(SourceCodeExtractor.java:34)
我已经删除了抛出并使用try catch继续下一个文件,完成最后一个循环或不完整(我得到我的源代码,它可能是180kb或9kb)。我说在尝试while循环时吐出错误2并且这样做我可以说这是问题同时...
答案 0 :(得分:0)
我认为如果你摆脱这条线,你会发现你的代码变得更快:
System.out.println(inputLine);