IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Télécharger et enregistrer une page web


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut Télécharger et enregistrer une page web
    bonjour à tous. j'ai dèja lancer ce sujet , mais je crois que je n'était pas très clair; comme j'ai du modifier mes attentes.s'il vous plait, est ce que quelqu'un pourrai avoir un bout de code permettant de télécharger une page web et de l'enregistrer sur disque dur.merci beaucoup

  2. #2
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 42
    Points : 50
    Points
    50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    try{
      BufferedReader urlReader = new BufferedReader(new FileReader(new    Url('tonUrl"));
      FileWriter localFile = new FileWriter(new File("fichierLocal"));
     
      String s;
     
      while((s = urlReader.readLine()) != null){
         localFile.write(s);
      }
      urlReader.close();
      localFile.close();
    }
    catch(Exception e){
      System.out.println("Erreur : " + e);
    }
    J'ai pas testé

  3. #3
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    corrigé ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.io.*;
    import java.net.*;
     
    public class Test
    {
       public static void main(String args[])
       {
     
    		try{
    		  BufferedReader urlReader = new BufferedReader(new InputStreamReader(new URL("url").openStream()));
    		  FileWriter localFile = new FileWriter(new File("fichier"));
     
    		  String s;
     
    		  while((s = urlReader.readLine()) != null){
    		     localFile.write(s);
    		  }
    		  urlReader.close();
    		  localFile.close();
    		}
    		catch(Exception e){
    		  System.out.println("Erreur : " + e);
    		}
       }
     
    }
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Juste une remarque mais elle est importante : il faut toujours effectuer les close() dans un bloc finally, afin de fermer proprement les flux même en cas d'exception. Sinon on peut se retrouver à conserver des fichiers ouverts alors qu'on n'a plus aucun objet qui les références. Pour une application serveur ou destiné à fonctionner pendant un temps relativement long cela peut poser des problèmes...


    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.io.*;
    import java.net.*;
     
    public class Test
    {
       public static void main(String args[])
       {
          BufferedReader urlReader = null;
          FileWriter localFile = null;
     
          try{
            urlReader = new BufferedReader(new InputStreamReader(new URL("url").openStream()));
            localFile = new FileWriter(new File("fichier"));
     
            String s;
     
            while((s = urlReader.readLine()) != null){
               localFile.write(s);
            }
          }
          catch(Exception e){
            System.out.println("Erreur : " + e);
          } finally {
     
            if (urlReader!=null) {
                try {
                    urlReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
            if (localFile!=null) {
                try {
                    localFile.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
          }
       }
     
    }

    Le bloc finally est un peu illisible à cause des if et try/catch. Avec Java 5.0 on peut corriger cela facilement grâce à l'interface Closeable en se créant une méthode qui ferme le flux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void tryToClose (Closeable closeable) {
    	if (closeable!=null) {
    		try {
    			closeable.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Ce qui donne ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    finally {
    	Test.tryToClose(urlReader);
    	Test.tryToClose(localFile);
    }


    C'est possible avec Java 1.4 ou inférieur mais il faut réécrire la méthode plusieurs fois (une pour les InputStream, une pour les OutputStream, une pour les Reader, une pour les Writer, etc.)



    Enfin si c'est pour écrire directement dans un fichier, une lecture en utilisant un buffer de byte[] serait peut-être plus performante (on évite de créer des String temporaire).

    a++

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    merci beaucoup pour vos réponses, mais quand j'éxécute le code en considérant que l'URL est "http://www.lme.co.uk/dataprices_daily_metal.asp"
    je reçois l'erreur suivante:

    "Erreur : java.net.UnknownHostException: www.lme.co.uk"
    que dois je faire?

  6. #6
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut
    Citation Envoyé par bous_saad317
    merci beaucoup pour vos réponses, mais quand j'éxécute le code en considérant que l'URL est "http://www.lme.co.uk/dataprices_daily_metal.asp"
    je reçois l'erreur suivante:

    "Erreur : java.net.UnknownHostException: www.lme.co.uk"
    que dois je faire?
    c'est que java n'arrive pas a contacter le site
    essai par l'ip directement

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    merci ,encore.mais j'ai essayé avec l'adresse ip qui est 213.174.201.6 ce qui donne "http://213.174.201.6/dataprices_daily_metal.asp" mais ça marche toujours pas.cette fois je reçois le message d'erreur : "Erreur : java.net.NoRouteToHostException: Operation timed out: no further information" .je crois que c'est peut être parceque je passe par un serveur Proxy, sachant que je suis dans un réseau local.alors, s'il vous plait cherchons comment faire? :

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bous_saad317
    je crois que c'est peut être parceque je passe par un serveur Proxy, sachant que je suis dans un réseau local.
    Si tu es derrière un proxy, tu dois configurer ton application pour qu'elle utilise également ce proxy...

    Citation Envoyé par bous_saad317
    alors, s'il vous plait cherchons comment faire? :
    Pas la peine de chercher bien loin... il suffit de faire une recherche dans la FAQ...

    a++

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    ça y est!!!!! c'est ça merci beaucouppour votre aide. vous m'avez sauvez.merci encore.
    voilà tout le code pour des utilisateurs à venir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
     
    import java.io.*; 
    import java.net.*;
    import java.util.Properties;
     
    public class Extract 
    { 
       public static void main(String args[]) 
       { 
    	Properties prop = System.getProperties();
    	prop.put("http.proxyHost","172.16.3.30");
    	prop.put("http.proxyPort","3128");
     
     
    	  BufferedReader urlReader = null; 
    	  FileWriter localFile = null; 
     
    	  try{ 
    		urlReader = new BufferedReader(new InputStreamReader(new URL("http://213.174.201.6/dataprices_daily_metal.asp").openStream())); 
    		localFile = new FileWriter(new File("c:/out.html")); 
     
    		String s; 
     
    		while((s = urlReader.readLine()) != null){ 
    		   localFile.write(s); 
    		} 
    	  } 
    	  catch(Exception e){ 
    		System.out.println("Erreur : " + e); 
    	  } finally { 
     
    		if (urlReader!=null) { 
    			try { 
    				urlReader.close(); 
    			} catch (IOException e) { 
    				e.printStackTrace(); 
    			} 
    		} 
     
    		if (localFile!=null) { 
    			try { 
    				localFile.close(); 
    			} catch (IOException e) { 
    				e.printStackTrace(); 
    			} 
    		} 
     
    	  } 
       } 
     
    }

    merci encore adiguba.la prochaine fois je verrai du coté de la faq avant de lancer un sujet.ciao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrer une page web
    Par cutpeter56 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 13/06/2008, 09h20
  2. Enregistrer une page web sur le serveur
    Par guigui69 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/05/2008, 11h35
  3. Réponses: 3
    Dernier message: 25/05/2007, 22h17
  4. Enregistrer une page web en pdf ?
    Par jmulans dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 01/05/2007, 20h39
  5. enregistrer une page web entiere
    Par aaron4444 dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 13/06/2006, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo