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 :

Ajouter une ligne en fin de fichier sans écraser le fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Ajouter une ligne en fin de fichier sans écraser le fichier
    Bonjour,

    est-ce que quelqu'un pourrait m'indiquer comment insérer une ligne en fin de fichier sans écraser ce qu'il y avait dans ce fichier.
    J'ai essayé des tas de trucs mais dsoit ce qui était avant disparaissait, soit ça n'écrivait rien.

    Merci

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par afrikha
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    byte buffer[] = new byte[60];
    int bytes = System.in.read(buffer);
    FileOutputStream fos = new FileOutputStream("fichier.txt", true);
    fos.write(buffer, 0, bytes);
    Comment faire pour donner directement le mot qu'il faut ajouter sans passer par la lecture de ce mot a l'ecran

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Ben il suffit de transformer le mot que tu veux écrire en un tableau de byte puis tu passes ce tableau comme paramètre à la méthode write de FileOutputStream.
    ça donne un code qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    FileOutputStream fos=null
    String mot="chaine à insérer à la fin du fichier";
    try{
         fos=new FileOutputStream("fichier.txt", true);
         byte[] tab=mot.getBytes();
         fos.write(tab);
    }catch(IOException ex){
        ex.printStackTrace();
    }finally{
      if(fos!=null){
         fos.close();
      }
    }
    Voilà, j'espère que c'est assez clair.

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Tout cela ne me plait pas trop. En général, pour écrire/lire du texte dans les fichiers, faut passer par les reader/writer ( encodage toussa ).

  6. #6
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par iohack
    Tout cela ne me plait pas trop. En général, pour écrire/lire du texte dans les fichiers, faut passer par les reader/writer ( encodage toussa ).
    Tu as raison
    D'autant plus que la classe FileWriter possède un constructeur dont un des paramètres indique si oui ou non il faut ajouter le texte à celui déjà existant.

    Je rectifie donc mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    FileWriter fw=null
    String mot="chaine à insérer à la fin du fichier";
    try{
         fw=new FileWriter("fichier.txt", true);
         fw.write(mot,0,mot.length());
    }catch(IOException ex){
        ex.printStackTrace();
    }finally{
      if(fw!=null){
         fw.close();
      }
    }
    Pour rappel : il faut utiliser les flux binaires pour les données binaires (images,...) et les flux de caractères pour lire/écrire du texte.

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par afrikha
    Tu as raison
    D'autant plus que la classe FileWriter possède un constructeur dont un des paramètres indique si oui ou non il faut ajouter le texte à celui déjà existant.

    Je rectifie donc mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    FileWriter fw=null
    String mot="chaine à insérer à la fin du fichier";
    try{
         fw=new FileWriter("fichier.txt", true);
         fw.write(mot,0,mot.length());
    }catch(IOException ex){
        ex.printStackTrace();
    }finally{
      if(fw!=null){
         fw.close();
      }
    }
    Pour rappel : il faut utiliser les flux binaires pour les données binaires (images,...) et les flux de caractères pour lire/écrire du texte.

    @+
    La compilation du bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     void ajoute_mot(String mot, String nomFichier){
    	FileWriter fw=null;
    	try{
    	    fw=new FileWriter(nomFichier, true);
    	    fw.write(mot,0,mot.length());
    	}catch(IOException ex){
    	    ex.printStackTrace();
    	}finally{
    	    if(fw!=null){
    		fw.close();
    	    }
    	}
        }
    donne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unreported exception java.io.IOException; must be caught or declared to be thrown
                    fw.close();
                            ^
    1 error
    Pourquoi ?

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah c'est simple, il est possible que ton close() génère une IOException, donc il faut la catcher.

    Suffit de lire la javadoc pour le savoir: http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStreamWriter.html#close()
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par sinok
    Bah c'est simple, il est possible que ton close() génère une IOException, donc il faut la catcher.

    Suffit de lire la javadoc pour le savoir: http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStreamWriter.html#close()
    Merci.
    Est-ce qu'il existe un lien montrant la priorité concernant les exceptions.
    Par exemple si dans un code, il peut y avoir NumberFormatException et IOException quelle exception doit être mis dans le premier catch etc?

  10. #10
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Peu importe si c'est une IOException elle ne sera pas récupérée par le catch NumerFormatException, la seule chose à faire est de ne pas mettre un catch (Exception e) en premier car là forcément il bouffe tout
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  11. #11
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Un peu de lecture sur les exceptions ? les exceptions et les bonnes pratiques

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

Discussions similaires

  1. ajouter une ligne à la fin de la feuille
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2008, 15h28
  2. [Dataset] Ajout d'une ligne à la fin d'un dataset
    Par joeln3 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/07/2007, 13h37
  3. Copier une ligne à la fin d'un fichier en respectant les espacements
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 15/06/2007, 09h53
  4. [vb.net] ajouter une ligne à un fichier txt existant
    Par tbdarkspirit dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/05/2007, 11h41
  5. Ajouter une ligne à la fin d'un classeur excel
    Par maketossss dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/11/2005, 09h38

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