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

Langage Java Discussion :

réécrire dans un fichier texte


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 17
    Par défaut réécrire dans un fichier texte
    Bonjour, je souhaite réécrire dans un fichier texte:
    Exemple, ouvir à nouveau le fichier nomFichier, aller à la fin puis continuer d'écrire. Que faut-il mettre entre le fw.close() et le fw.write() qui suit?

    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
    package testecriturefichier;
    
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Main {
    
        public static void main(String[] args) throws IOException {
    
            String nomFichier;
            System.out.println("Comment voulez-vous nommer le fichier texte (d'extension .txt) ? ");
            nomFichier = Clavier.lireString();
            
            FileWriter fw = new FileWriter("C:\\Temp\\"+nomFichier+".txt");
           
            fw.write("Bonjour\r\n");//retour à la ligne
            fw.write("Ecriture dans le fichier OK !");
            fw.flush();
    
            fw.close(); 
    
            fw.write("Suite ecriture dans le fichier OK !");
    
        }
    
    }

    Merci pour vos informations,

    Cordialement,


    Malcolm

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Si tu close() un fichier, tu ne peux plus rien en faire, il faut l'ouvrir à nouveau avec new.

    Comme l'indique la JavaDoc de FileWriter, voici comment ouvrir un fichier en écriture, à la fin, en Writer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nomFichier = "C:\\Temp\\"+nomFichier+".txt";
     
    Writer fw = new FileWriter(nomFichier, true);
    Ensuite écrire normalement avec les méthodes de Writer, et close() normalement quand on a fini.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Attention ce n'est pas la solution
    En effet, si vous faites comme ça, votre fichier ne contiendra que ce que vous pensiez ajouter.
    Vous ne pouvez pas utiliser un Writer basé sur un File pour réaliser ce genre d'opération.
    Vous avez deux solutions :

    La première consiste à se limiter à l'usage de File et d'un Writer + un Reader. Dans ce cas, utilisez un conteneur comme un Vector par exemple et commencer par lire votre fichier en remplissant votre Vector avec chaque ligne lue. Une fois fait, au lieu de chercher à ajouter vos lignes directement au fichier, ajoutez-les au vecteur. A la fin, réaliser votre opération d'écriture en vidant l'intégralité du vecteur dans le fichier.

    La seconde, et de loin la plus propre, utilisez un RandomAccessFile. Il vous suffira de placer le pointeur à la fin du fichier à l'aide de sa méthode seek puis vous pourrez écrire directement vos lignes supplémentaires.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par pursang Voir le message
    En effet, si vous faites comme ça, votre fichier ne contiendra que ce que vous pensiez ajouter.
    Jamais entendu parler du paramètre boolean append ?
    La JavaDoc, dont j'ai indiqué le lien, se tromperait ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    +1 le code de the_elvin répond exactement à la question. Pas besoin d'aller stocker le fichier en mémoire.

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Désolé mais c'est totalement faux
    Le code en question ne répond pas à la question qui je le rappelle consiste à ajouter des lignes dans un fichier.
    Le seul moyen de le faire simplement est d'utiliser un RandomAcessFile.
    Imaginons un fichier.txt situé sous C:\fichier.txt par exemple.
    Ce dernier contiendrai les deux lignes de textes suivantes :

    Ligne1
    Ligne2

    Objectif, ajouter les lignes Ligne3 et Ligne4.
    Si vous exploiter la méthode proposée avec un FileWriter, votre fichier ne contiendra que Ligne3 et Ligne4, Ligne1 et 2 auront été écrasées !

    Dans ce cas il faut faire comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    File fichierTravail = new File("C:\\fichier.txt");
    RandomAcessFile manipulateur = new RandomAcessFile(fichierTravail, "rw");
    manipulateur.seek(manipulateur.length());
    // A partir de là, il ne reste plus qu'à écrire les lignes que l'on veut ajouter.
    // Pour cela il existe différentes méthodes, aussi cet exemple n'en exploitera qu'une.
    manipulateur.writeUTF("Ligne supplémentaire");
    manipulateur.close();
    Voilà, je ne vois pas d'autre solutions plus simple. Attention toutefois, la méthode que j'utilise dans cet exemple sous entend évidement que le fichier texte manipulé est encodé au format UTF-8.

    Pour finir, je préciserai que celon la documentation de l'API java de sun, le constructeur new FileWriter("nomfichier", true) n'existe pas...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/07/2004, 09h30
  2. Réponses: 2
    Dernier message: 02/03/2004, 19h38
  3. Réponses: 3
    Dernier message: 22/02/2004, 20h09
  4. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13

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