Как возобновить загрузку файлов с использованием httpurlconnection в Java после сбоя сети?
Я пытаюсь улучшить свой загрузчик файлов java, чтобы он мог , если подключение будет прерывается (например, из -за неудачи сети). Возобновляясь, отправив заголовок диапазона на сервер. Тем не менее, я не уверен, как правильно реализовать эту логику: < /p>
Проверьте размер частично загруженного файла < /li>
Установите правильный диапазон < /code> в http -запросе < /li>
Доклады в существующий файл без перевозки < /li>
< /br /> < /br />
< /br /> < /br /> < /br />
< /br /> < /li> < /li> < /br /> (Базовый) Код, который я использую, который загружает файл с самого начала каждый раз :
public static void downloadFileWithResume(String fileURL, String destination) throws IOException {
File file = new File(destination);
long existingFileSize = file.exists() ? file.length() : 0;
URL url = new URL(fileURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
if (existingFileSize > 0) {
httpConn.setRequestProperty("Range", "bytes=" + existingFileSize + "-");
System.out.println("Resuming download from byte " + existingFileSize);
}
int responseCode = httpConn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_PARTIAL || responseCode == HttpURLConnection.HTTP_OK) {
try (InputStream inputStream = httpConn.getInputStream();
RandomAccessFile outputFile = new RandomAccessFile(destination, "rw")) {
outputFile.seek(existingFileSize);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputFile.write(buffer, 0, bytesRead);
}
}
} else {
throw new IOException("Server replied with HTTP code: " + responseCode);
}
httpConn.disconnect();
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... twork-fail