У меня есть ссылка 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