Problème d'écriture dans un fichier texte

logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004 - 10 mai 2004 à 17:33
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004 - 11 mai 2004 à 10:16
Bonjour à tous!

Jai un petit problème qui commence à me prendre la t^te sur un enregistrement dans un fichier texte. En fait je doit faire un fichier log. Je veux ouvrir un fichier pui écrire à la fin ou au début (m'en fou) et ensuite de le refermer.
J'ai déjà essayé 2 solutions :

1-
PrintStream ficout=new PrintStream(new FileOutputStream(cheminlog));
ficout.println("un ex à la con\n");
ficout.close();


2-
Fichier= new PrintWriter(new BufferedOutputStream(new FileOutputStream(new File(chemin))));
Fichier.println("truc à la con");
Fichier.close();


Pour les 2 solutions, à chaque écriture le contenu est effacé ce que je ne ve pas. J'ai trouvé un moyen de contourné en stockant le contenu dans une variable puis de l'enregistrer avec la ligne que je ve rajouter mais à long terme ce n'est pas une solution!

Est ce que des personne vois des solutions à mon problème ?

MERCI D'AVANCE

4 réponses

safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
10 mai 2004 à 18:34
ouvre ton flux au début et garde le ouvert jusq'a ce que tu finisse; à chaque foi tu fais fichier.println("............");fichier.flush();
ne ferme le flux q'à la fin de ton programme.
si tu ve garder le contenu lors d'un autre demarrage de ton programme ca fonctionnera pas mais surement il y a une solution ;)
0
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
10 mai 2004 à 18:34
ouvre ton flux au début et garde le ouvert jusq'a ce que tu finisse; à chaque foi tu fais fichier.println("............");fichier.flush();
ne ferme le flux q'à la fin de ton programme.
si tu ve garder le contenu lors d'un autre demarrage de ton programme ca fonctionnera pas mais surement il y a une solution ;)
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
11 mai 2004 à 09:14
Bonjour,
Si tu veux écrire à la fin du fichier, il suffit de rajouter l'argument true dans la classe FileOutputStream.Du coup, à chaque ouverture de ce fichier, si tu écris des infos, ils seront stockés à la fin

Voilà

PS: voici la spécification dans la doc java:
public FileOutputStream(String name, boolean append)
throws FileNotFoundExceptionCreates an output

file stream to write to the file with the specified name. If the second argument is true, then bytes will be written to the end of the file rather than the beginning. A new FileDescriptor object is created to represent this file connection.
First, if there is a security manager, its checkWrite method is called with name as its argument.

If the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason then a FileNotFoundException is thrown.
0
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004
11 mai 2004 à 10:16
Pour répondre à safisoft, je suis en train de réaliser un moteur de recherche et pour celui ci, j'ai besoin d'un log pour me permettre d'analyser les requêtes les plus souvent faites ou les erreurs qui reviennent le plus régulièrement. (réalisé en servlet)

L'enregistrement est occasionnel, c'est pourquoi j'avais besoin d'un ouverture et d'un enregistrement à la suite de ce qui est déjà écris dans un fichier texte.

indiana_jules ce que tu m'a donnjé marche très bien et ça écris bien à la suite du fichier texte.

Merci à vous 2 de m'avoir aidé!
@++ on the web
0
Rejoignez-nous