Скачивание файлов на Java и распространенные ошибки - PullRequest
1 голос
/ 14 июня 2011

Я написал простой загрузчик как Java-апплет.Во время некоторых тестов я обнаружил, что мой способ загрузки файлов даже не настолько совершенен, как, например, Firefox.

Мой код:

InputStream is = null;
FileOutputStream os = null;
os = new FileOutputStream(...);
URL u = new URL(...);
URLConnection uc = u.openConnection();
is = uc.getInputStream();
final byte[] buf = new byte[1024];
for(int count = is.read(buf);count != -1;count = is.read(buf)) {
    os.write(buf, 0, count);
}

Иногда мой апплет работает нормально, иногданеожиданные вещи случаются.Например, время от времени, во время загрузки апплет выдает исключение ввода-вывода или просто на некоторое время теряет соединение, без возможности вернуться к текущей загрузке и завершить его.

Я знаю, что действительно продвинутый способ слишкомсложен для одного неопытного Java-программиста, но, возможно, вы знаете некоторые приемы, чтобы минимизировать риск появления этих проблем.

1 Ответ

1 голос
/ 14 июня 2011

Итак, вы хотите возобновить загрузку.

Если вы получили IOException при чтении с URL-адреса, возникла проблема с соединением.Бывает.Теперь вы должны заметить, сколько вы уже загрузили, и открыть новое подключение, которое начинается там.

Чтобы сделать это, используйте setRequestProperty() на втором и отправьте правильные поля заголовка для «Я хочу толькодиапазон ресурса, начинающийся с ... ».См. раздел 14.35.2 Запросы на поиск диапазона в спецификации HTTP 1.1.Вы должны проверить поля заголовка в ответе, чтобы увидеть, действительно ли вы вернули диапазон.

...