Java: reprendre le Téléchargement en URLConnection

J'ai écrit un programme qui télécharge des fichiers à partir de certains serveurs.

Actuellement, le programme fonctionne correctement.

Mais je veux ajouter reprendre son soutien.

Je suis en train de faire comme ça, Mais le résultat de fichier est corrompu:

....

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);
}

....

Je suis en Essais sur un serveur que je connais supporte reprendre.

J'ai téléchargé quelques octets.(72720)

Ensuite Tenté de la reprendre.

Puis j'ai ouvert le fichier avec un éditeur Hexadécimal , Au décalage 72720 les premiers Octets sont répétées:

Octets 0-36: FLV.............«..........onMetaData

Octets 72720-72756: FLV.............«..........onMetaData

Il Commence à télécharger depuis le début!

Alors que quand je le fais par wget il le fait correctement et les réponses apportées par le Contenu de Gamme domaine!

Les réponses du serveur "302 FOUND" et un "206 Partial Content" dans wget journal.

Peut "302 FOUND" à l'origine du problème?

Quel est le problème ?

Merci.

L'autre problème, c'est que vous avez trop profondément imbriquée si/d'autre bloc. Faire usage de la && de l'opérateur. I. e. if (a && b && c) { fos = new FOS(name, true); } else { fos = new FOS(name); }. C'est tout. SEC.
J'ai résumé le code! dans ces si d'autre blocs je suis la hausse de certains messages, donc ça devrait être comme il est. mais je vous remercie pour votre réponse.
Le 302 ne devrait pas être un problème puisque HTTPUrlConnection suit redirige par défaut. Sauf si vous êtes en ce qui concerne les redirections hors explicitement, ce dont je doute puisque vous êtes réellement obtenir le contenu du fichier

OriginalL'auteur RYN | 2010-08-05