Java—过早的EOF—编写web阅读器的更好方法?

Java—过早的EOF—编写web阅读器的更好方法?,java,eclipse,eof,Java,Eclipse,Eof,我有这个代码,我用来阅读一个网页的源代码。这段代码是循环的,它运行了很多次。然而,它并没有完成它的大部分时间。例如,如果输出文件应该是180kb的文本文件,我有180,这意味着它是完整的,我还得到了各种大小,如9kb、150kb、170kb、50kb等。。。我的意思是,对于每10个循环,它会给我一个完整的页面,10个循环中有3个循环,大约是不完整源文件的7个循环 URL site = null; site = new URL("http://www.someurl/page/"+ i); URL

我有这个代码,我用来阅读一个网页的源代码。这段代码是循环的,它运行了很多次。然而,它并没有完成它的大部分时间。例如,如果输出文件应该是180kb的文本文件,我有180,这意味着它是完整的,我还得到了各种大小,如9kb、150kb、170kb、50kb等。。。我的意思是,对于每10个循环,它会给我一个完整的页面,10个循环中有3个循环,大约是不完整源文件的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上运行了相同的代码,它给了我十分之三的完整数据。我在虚拟windowsxp中运行eclipse,内存和处理能力都比较少,它让我在10个完整版本中有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,因此我可以说这是while的问题…

我想如果去掉这行代码,您会发现代码运行得更快:

System.out.println(inputLine);

你正在连接的网站也很慢吗?不是很好。无论如何,我有28kb的下载速度,但代码使用不到5kbps的带宽。我也愿意接受其他建议。自由地呈现全新的代码。。。我不受这个代码的约束,但这是我知道的阅读网页的唯一方法。你能用你正在使用的真实网站名称粘贴整个代码吗?我想在我这边试试。对于这个网站我不能,因为它是为了我的工作项目。然而,这里是使用相同格式的anandtech。当你运行它的时候,你不会得到确切的错误,但是它仍然会给我不完整的无页面,但是它们存在的原因我不知道。完整代码:是的。但是,如果你不浪费时间将每一行写入控制台,你将获得更快的下载速度/更少的异常。没关系。当我实际使用代码时,我使用它将源代码写入文件。我只使用system.out.printlnpagenum+I,即使没有filewriter和print to console,也经常会遇到相同的错误。代码已经部分起作用了。我想知道如何修理它。