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 :

Ecrire à la fin d'un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut Ecrire à la fin d'un fichier
    Bonjour,

    Je voudrais écrire dans un fichier les URL que je récupère.

    Mais mon fichier se fait écraser a chaque fois du coup je n'ai que une seule URL dans mon fichier alors que je voudrais toutes la liste que je récupère.

    Comment faire pour écrire à la fin sans écraser le fichier ?

    Voici mon code, plus précisement la méthode public static void ecrire(String path, String text) :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.io.Reader;
    import java.net.URLConnection;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.EditorKit;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.html.HTML;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
    public class robot {
     
       	 private static List<String> visitedURL = new ArrayList();
     
    	 public static void main(String[] args) {	
    	        collectURL("http://www.bde-ges.com");
    	        //ecrire("C:/Users/log.txt", "test");
    	 }
     
    	 private static void collectURL(String myurl){
    		  try {
                 // Chargement de la page
                 URL url = new URL(myurl);
                 URLConnection uconnection = url.openConnection();
                 Reader rd = new InputStreamReader(uconnection.getInputStream());
                 // Lecture du document
                 EditorKit kit = new HTMLEditorKit();
                 HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                 doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                 kit.read(rd, doc, 0);
                 // Parcour des balises de lien
                 HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                 while (it.isValid()) {
                     SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                     String link = (String) s.getAttribute(HTML.Attribute.HREF);
                     if ((link != null)&& !(visitedURL.contains(link))){
                         // ajout des liens trouvés à la List
                     	System.out.println(link);
                     	ecrire("C:/Users/log.txt", link);
                     	visitedURL.add(link);
                     	collectURL(link);
                     }
                     it.next();
                 }
    			 } catch (BadLocationException ex) {
    		         Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
    		     } catch (IOException ex) {
    		         Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
    		     }
    	 }
     
    	 public static void ecrire(String path, String text) 
    		{
    			PrintWriter ecri ;
    			try
    			{
    				ecri = new PrintWriter(new FileWriter(path));
    				ecri.print(text);
    				ecri.flush();
    				ecri.close();
    			}//try
    			catch (NullPointerException a)
    			{
    				System.out.println("Erreur : pointeur null");
    			}
    			catch (IOException a)
    			{
    				System.out.println("Problème de chemin");
    			}
    		}//ecrire
    }
    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Bonjour,

    Solution présente dans la FAQ, en prime, le lien.
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    je l'ai lu mais je n'arrive pas à la mettre en place.

    saurais tu l'intégrer a mon code stp ? jcomprend vraiment pas..

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bête copier-coller, avec renommage des variables.
    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
     
    public static void ecrire(String path, String text) 
    {
         FileWriter writer = null;
         try{
              writer = new FileWriter(path, true);
              writer.write(text,0,texte.length());
         }catch(IOException ex)
         {
             ex.printStackTrace();
         }finally{
              if(writer != null)
              {
                   writer.close();
              }
         }
    }
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    salut
    il suffit d'ajouter la valeur true à coté de chemin du fichier à écrire (path) pour qu'il n'écrase pas l'ancien contenu du fichier.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    La class pour faire cela est FileWriter.
    Le constructeur prend en argument le fichier et un boolean pour savoir si tu écris en fin de fichier.

    en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File f=new File("ton/chemin");
    FileWriter fw=new FileWriter(f,true);
    fw.write("ce que tu veux");
    Tout cela enrobé d'un try bien sur.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    En fait, le paramètre facultatif (..., boolean) qu'on peut ajouter après le nom du fichier permet d'indiquer si on fait une écriture "append" ou pas:

    -false ou rien, on "écrase",
    -true c'est "append".

    Attention donc car par défaut c'est false, on "écrase" le contenu éventuel du fichier.

    Remarque:

    Le second paramètre peut bien entendu être un boolean initialisé à true ou false en fonction des besoins...

    Cordialement,

    Dan

Discussions similaires

  1. Ecrire à la fin d'un fichier
    Par ImagingAllthe dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/05/2009, 20h19
  2. Ecrire à la fin d'un fichier texte
    Par Super_babar dans le forum Fortran
    Réponses: 2
    Dernier message: 10/04/2009, 16h33
  3. pb : Ecrire à la fin d'un fichier
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 03/02/2008, 00h26
  4. Ecrire à la fin d'un fichier
    Par Razgriz dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 20/10/2007, 13h00
  5. ecrire à la fin d'un fichier
    Par bonjour69 dans le forum C
    Réponses: 2
    Dernier message: 20/04/2007, 11h17

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