Telechargement d'un document à partir d'un programme java [Résolu]

Signaler
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
Bonsoir,
J'ai voulu faire un programme java qui télécharge un document à partir wikipédia. J'ai trouvé ce code et il marche bien

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class Wiki
{
public static void getFile(String host)
{
InputStream input = null;
FileOutputStream writeFile = null;

try
{
URL url = new URL(host);
URLConnection connection = url.openConnection();
int fileLength = connection.getContentLength();

if (fileLength == -1)
{
System.out.println("Invalide URL or file.");
return;
}
else{
input = connection.getInputStream();
String fileName = url.getFile().substring(url.getFile().lastIndexOf('/') + 1);
writeFile = new FileOutputStream(fileName);
byte[] buffer = new byte[1024];
int read;

while ((read = input.read(buffer)) > 0)
writeFile.write(buffer, 0, read);
writeFile.flush();
}
}
catch (IOException e)
{
System.out.println("Error while trying to download the file.");
e.printStackTrace();
}
finally
{
try
{
writeFile.close();
input.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

public static void main(String[] args)
{

getFile("http://ar.wikipedia.org/wiki/");
}
}


Maintenant mon problème c'est que j'ai un tableau contenant des noms et je veux que mon programme télécharge automatiquement les article succesivement. j'ai essayé avec ca et ca n'a pas marché
for(k=0;k<tab.length;k++)
{

getFile("http://ar.wikipedia.org/wiki/"+tab[k]);

}
il se coinse lorsqu'il ne trouve pas un article.
Je veux bien que a chaque fois ne trouve pas l'article il passe au suivant et ne se coinse pas.
Merci bien de votre aide

7 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Dans le cas ou il ne trouve pas d'article, il doit lever une exception, il faudra que tu la catch à l'intérieur de ta boucle pour qu'il passe à l'élément suivant :

for(k=0;k<tab.length;k++) { 
    try {
        getFile("http://ar.wikipedia.org/wiki/"+tab[k]); 
    }
    catch(Exception e){
        // écris ici ce que tu veux faire si l'article n'est pas trouvé
        // (peut être rien)
    }
} 
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Bonjour,

Je déplace vers le forum java.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Par contre, ne laisse pas le catch(Exception e), mais remplace par le type d'exception qui est levé lorsque l'article n'est pas trouvé sinon, tu risques d'avoir des problèmes.
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012

Bonjour
Je vous remercie très bien.
Ca marche très bien maintenant.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
De rien.

Penses à accepter la réponse.

A+
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012

OK c bon la réponse est acceptée.
Excusez moi c la première fois que j'utilise ce forum.
Merci une autre foi.
cordialement
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Il n'y a pas de mal.
a+