Telechargement d'un document à partir d'un programme java

Résolu
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012 - 10 mars 2012 à 04:41
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 11 mars 2012 à 09:31
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

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 09:50
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)
    }
} 
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 09:45
Bonjour,

Je déplace vers le forum java.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 09:51
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.
0
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012
10 mars 2012 à 17:07
Bonjour
Je vous remercie très bien.
Ca marche très bien maintenant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 18:01
De rien.

Penses à accepter la réponse.

A+
0
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012
10 mars 2012 à 19:51
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 mars 2012 à 09:31
Il n'y a pas de mal.
a+
0
Rejoignez-nous