Я написал программу, которая загружает некоторые файлы с некоторых серверов.
На данный момент программа работает нормально.
Но я хочу добавить поддержку резюме.
Я делаю это так, но файл результатов поврежден:
....
File fcheck=new File(SaveDir+"/"+filename);
if(resumebox.isSelected() && fcheck.exists()){
connection.setRequestProperty("Range", "Bytes="+(fcheck.length())+"-");
}
connection.setDoInput(true);
connection.setDoOutput(true);
BufferedInputStream in = new BufferedInputStream (connection.getInputStream());
pbar.setIndeterminate(false);
pbar.setStringPainted(true);
java.io.FileOutputStream fos ;
if(resumebox.isSelected()){
if(fcheck.exists()){
if(connection.getHeaderField("Accept-Ranges").equals("bytes")){
fos = new java.io.FileOutputStream(SaveDir+"/"+filename,true);
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
....
Я тестирую его на сервере, который, как я знаю, поддерживает резюме.
Я скачал несколько байтов. (72720)
Затем попытался возобновить его.
Затем я открыл файл с помощью шестнадцатеричного редактора. По смещению 72720 повторяются первые байты:
Байты 0-36: FLV ............. «.......... onMetaData
Байт 72720-72756: FLV ............. «.......... onMetaData
Загрузка начинается с самого начала!
В то время как когда я делаю это с помощью wget, он делает это правильно и отвечает полем Content-Range!
Сервер отвечает «302 НАЙДЕНО» и «206 Частичное содержимое» в журнале wget.
Может ли «302 НАЙДЕНО» вызвать проблему?
В чем проблема?
Спасибо.