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 :

Probléme pour ecrire dans un fichier


Sujet :

Entrée/Sortie Java

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Points : 13
    Points
    13
    Par défaut Probléme pour ecrire dans un fichier
    Bonjour,

    j'ai un probléme pour ecrire a la fin d'un fichier, avant ma fonction fonctionnai tres bien , j'avais pris exemple sur un thread de ce forum.

    Je n'ai absolument pas changer ma fonction entre temps et en touchant a d'autre parti de mon code j'ai remarqué que ma fonction qui doit ecrire dans un fichier n'ecrit plus rien du tout ... par contre elle créé bien le fichier s'il n'existe pas.

    voici le code source :

    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
     
    public static String FichierLog = "//X/toto.txt";
    public void FichierLog(String status)
    	{
    		FileOutputStream fos = null;
    		try
    		{
    			//FileWriter fos = new FileWriter(FichierLog);
    			//PrintWriter p = new PrintWriter(fos);
    			fos = new FileOutputStream(FichierLog, true);
    			PrintWriter p = new PrintWriter(fos);
     
    			DateFormat monFormatDeDate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
    			Calendar cal = Calendar.getInstance();
    			Date maintenant = cal.getTime();
    			String dateEtHeure = monFormatDeDate.format(maintenant);
     
    			p.println("["+dateEtHeure+"]" + " : " + status);
     
    			fos.close();
    			p.close();
    		}
    		catch(IOException ioe) 
    		{
    			System.err.println("IO erreur :" + ioe);
    		}
    	}
    a noter qu'avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FileWriter fos = new FileWriter(FichierLog);
    PrintWriter p = new PrintWriter(fos);
    j'arrive bien à ecrire dans le fichier mais sa ecrase les ancienne données d'ou l'utilisation de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fos = new FileOutputStream(FichierLog, true);
    PrintWriter p = new PrintWriter(fos);
    mais malheuresement avec ceci je n'ecrit plus rien du tout dans le fichier

    si vous voyez le probléme n'hesitez pas à repondre

    merci.

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je ne pense pas que ça règle le pb, mais j'aurais fermé les stream dans le meme sens qu'ils sont ouvert. Cad fermer le Printwriter avant le fos
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Il faut aussi fermer les fluxs dans des blocks finally

    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
     
    public static String FichierLog = "//X/toto.txt";
    public void FichierLog(String status) {
        try {
            PrintWriter p = new PrintWriter(new FileOutputStream(FichierLog, true));
     
            DateFormat monFormatDeDate = DateFormat.
                                   getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
            Calendar cal = Calendar.getInstance();
            Date maintenant = cal.getTime();
            String dateEtHeure = monFormatDeDate.format(maintenant);
            try {
                p.println("["+dateEtHeure+"]" + " : " + status);
                p.flush();
            } finally {
                p.close();
            }
        } catch(IOException ioe) {
            System.err.println("IO erreur :" + ioe);
        }
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  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,


    Est-ce que tu as une exception lorsque tu exécutes ce code ?

    Sinon je te conseille d'utiliser un bloc try/finally pour fermer les resources :
    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
        public void FichierLog(String status)
        {
            try {
                PrintWriter p = new PrintWriter(new FileOutputStream(FichierLog, true));
                try {
                    DateFormat monFormatDeDate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
                    String dateEtHeure = monFormatDeDate.format(new Date());
                    p.println("["+dateEtHeure+"]" + " : " + status);
     
                } finally {
                    p.close();
                }
            } catch(IOException ioe) {
                System.err.println("IO erreur :" + ioe);
            }
        }
    a++

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    bonjour et merci des reponses

    alors non je n'ai pas d'exeption, et coimme je l'ai dit c'est assez bizarre car avant sa marché et il s'est passé qqchose comme par magie et cela ne marche plus

    bref je vais test le bloc finaly et je reviens vous dire

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    comme le propose le y@m's, met le flush, ça fait pas de mal. Moi j'avais exactement pareil. Un méthode qui marche, qques modif puis paf, plus rien d'écrit. j'ai mis le flush et c'était bon ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    super merci , ca marche nikel

    effectivement l'ajout du bloc finally et du flush fait que sa remarche tres bien !

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

Discussions similaires

  1. Problème pour enregistrer dans un fichier XML
    Par Jb_One73 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/02/2015, 08h22
  2. Problème pour écrire dans un fichier
    Par cogi234 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/09/2014, 20h30
  3. Problème pour écriture dans un fichier
    Par nekcorp dans le forum Général Python
    Réponses: 6
    Dernier message: 11/04/2014, 16h53
  4. Réponses: 4
    Dernier message: 09/12/2010, 15h30
  5. Réponses: 4
    Dernier message: 18/01/2008, 21h48

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