2013-07-20 33 views
1

我有这段代码,我用它来读取网页的源代码。这段代码在循环中运行很多次。然而,大多数时候它并没有完成。例如,如果输出文件应该是180kb的文本文件,我有180这意味着它是完整的,我也得到各种大小像9kb,150kb,170kb,50kb等...我的意思是每10个循环它给我一个完整的页面3次10和7次左右的不完整的源文件。Java - 早熟EOF - 写网页阅读器的更好方法?

我已经在其他地方见过过早EOF这些数据快到慢于它被处理,我想指出我的连接速度很慢,我在我的win7-64执行与此相同的代码,它给了我3完成10个。我在虚拟windows xp中运行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) 

我已删除了引发和使用尝试抓住它继续与完成最后一个循环或不完整的下一个文件(我得到我的源代码,它可能是180kb或9kb)。我说吐出错误2时,尝试while循环,它这样做,我可以说这是同时的问题...

+0

是您连接到的网站也太慢? – Farzad

+0

不是他们真的很体面。无论如何,我有28kb的下载速度,但代码使用不到5kbps的带宽。我也接受其他建议。自由地呈现全新的代码...我不受这段代码的约束,但它是我知道阅读网页的唯一方法。 – anno

+0

您可以将整个代码粘贴到您使用的真实网站名称中吗?我想尝试在我身边。 – Farzad

回答

0

我想你会发现,如果你摆脱了你的代码快得多此行:

System.out.println(inputLine); 
+0

它给出了与该行相同的错误。 – anno

+0

是的。但是,如果您不浪费时间将每行写入控制台 –

+0

并不重要,您将获得更快的下载/更少的异常。当我实际使用代码时,我使用它来将源代码写入文件。我只是使用system.out.println“pagenum”+我,即使没有编写器和打印到控制台仍然经常遇到相同的错误。代码已经部分工作。我想知道如何解决它。 – anno