écrire dans un fichier sans écraser son contenu

cs_eyya Messages postés 11 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 31 mars 2011 - 4 mars 2011 à 08:51
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 4 mars 2011 à 10:39
Bonjour à tous les membres

j'ai un fichier nommé Altracart.job dont le contenu est le suivant:


LABEL c:\Printer\500000A
SET Expire="2013-01"
SET Lot=201102011
SET ExpDate=130101
SET Counter=24
PRINT 1000
QUIT

Je veux modifier les deux champs "SET Counter" et "PRINT" par des nouvelles valeurs entrées par un utilisateur via une interface graphique.

J'ai essayé de faire ça mais mais quand je modifie ces deux champs j'ai aperçu que l'ancien contenu du fichier a été écrasé

Voici mon fichier après la modification

SET Counter=nouvelle valeur entréé
PRINT nouvelle valeur entrée

SVP , comment faire

Merci




eyya

3 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
4 mars 2011 à 09:26
Bonjour,

Pour ce faire,tu peux utiliser:
1) le constructeur FileStream(string, FileMode) en spécifiant FileMode.Append.
2) et la méthode FileStream.Seek(long, SeekOrigin) en spécificiant l'endroit où tu souhaites modifier.

Exemple: ici

Maintenant, n'ayant personnellement rien eu à faire de plus qu'un vrai Append (écriture à partir de la fin d'un fichier), je doute sur le fait que la méthode la plus simple ne serait pas d'ouvrir le fichier en lecture et d'en créer un nouveau à côté (renommer en fin).
Peut-être même plus simple à coder.

Je te laisse voir et nous dire

Bonne journée,


Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
cs_eyya Messages postés 11 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 31 mars 2011
4 mars 2011 à 09:58
Excuser moi pour le dérangement mais je n'arrive pas à spécifier les attributs de la méthode FileStraem.Seek(long,SeekOrigin)
Est-ce que je peux mettre ça:
FileStream.Seek(longeur de mon texte à remplacer,début de fichier)


Merci encore une autre fois




eyya
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
4 mars 2011 à 10:39
Salut,

Non, le premier paramètre long offset correspond comme dans la définition de la msdn à:
"Point par rapport au origin à partir duquel la recherche doit commencer." (pas très français tout ça ;p ).
En gros, c'est le déplacement du curseur d'écriture à effectuer à partir de la valeur de SeekOrigin (que tu as dû spécifier à SeekOrigin.Begin).
Le déplacement se compte en nombre de caractères (prendre en compte les sauts de ligne).

C'est pour cela que je parlais du fait de re-créer un fichier. Car c'est pas si simple que ça.
En plus, il te faudra insérer tes nouvelles valeurs et non écraser.
Pas simple tout ça !

Bonne journée,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Rejoignez-nous