2013-07-20 35 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