Bonjour à tous,
Il vaudrait mieux que tu revienne à la base de ce que tu veux faire et reparte de là.
Oui, de fait...
Ce sera plus clair avec du code (j'espère :p)
L'idée du programme est de télécharger simultanément d'autres programmes et de les copier dans un sous-dossier "Outils". Pour ce faire, l'utilisateur clique sur des boutons qui appellent une méthode "download".
Un thread est créé pour chaque "download". Les variables "name" (nom du fichier à télécharger) et "url" (adresse de l'outil) sont évidemment différentes pour chaque téléchargement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
...
protected void download() throws IOException {
...
java.io.BufferedInputStream in = null;
try {
in = new java.io.BufferedInputStream(new java.net.URL(url).openStream());
...
java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
byte[] data = new byte[1024];
int x=0;
try {
while((x=in.read(data,0,1024))>=0)
{
bout.write(data,0,x);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
isok.setText("Téléchargement de " +name+ " manqué !");
e1.printStackTrace();
}
try {
bout.close();
} catch (IOException e1) {
isok.setText("Téléchargement de " +name+ " manqué !");
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
isok.setText("Téléchargement de " +name+ " manqué !");
// TODO Auto-generated catch block
e.printStackTrace();
}
final File fichier = new File (name);
...
else
{
isok.setText("Téléchargement de " +name+ " terminé !");
}
fichier.renameTo(new File("Outils/" +name)); |
Tout fonctionne à la perfection (le .JAR est conséquent) sauf que si je télécharge plusieurs fichiers en même temps (plusieurs appels à la méthode "download" avec des variables différentes), le programme ne copie pas les fichiers téléchargés dans le dossier "Outils" (parce que ma variable "name" a changé entretemps).
Par contre, si je retire
fichier.renameTo(new File("Outils/" +name));
alors tous les outils sont bien téléchargés dans le dossier courant.
J'aurais donc voulu forcer mon outil à télécharger directement les outils au bon endroit...
merci
Partager