我有一個mp3
鏈接,我想從Java下載只是爲了測試。以下是我的代碼要做的Java中的文件下載
private void saveFile() throws Exception{
System.out.println("Opening InputStream.");
InputStream is = fileUrlConnection.getInputStream();
System.out.println("Total: "+is.available()+" bytes");
FileOutputStream fos = new FileOutputStream(new File("hello.mp3"));
byte[] buffer = new byte[1024];
while (is.read(buffer)!= -1) {
fos.write(buffer);
}
is.close();
fos.close();
}
上述方法在多次調用後引發異常。
java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.jwc.FileSaver.saveFile(FileSaver.java:24)
at com.jwc.FileSaver.run(FileSaver.java:39)
at java.lang.Thread.run(Unknown Source)
你怎麼知道它沒有越過這條線? 'getInputStream'是否會引發異常?順便說一句。 'is.read()'返回讀取的字節數。你不能忽略這個數字。 – SpiderPig
對不起,它確實會拋出異常。請再次看看我的問題再次感謝 –
你必須趕上例外,然後你可以再次下載文件,或者希望它完成了,儘管這個錯誤。您也可以按照此問題中所述,嘗試在停止的位置恢復下載。 http://stackoverflow.com/questions/3411480/how-to-resume-an-interrupted-download – SpiderPig