Écriture simultanée dans plusieurs fichiers
Bonjour tout le monde.
Je suis en train de développer une application en C++, et cette application va devoir me sortir comme résultat 3 fichiers plats (TXT):
- Le premier sera pour le résultat du traitement de mon programme
- Le deuxième pour les statistiques
- Le troisième pour le log des erreurs.
Ma question est la suivante:
Est ce que je peux, en toute sécurité, écrire simultanément dans ces trois fichiers? C'est à dire, est ce que je peux, au début de mon programme, localiser mes trois fichiers, les ouvrir en création, et écrire à chaque fois qu'il y a besoin, l'information nécessaire dans le fichier adéquat?
J'ai demandé à droite à gauche, on m'a dit que non, mais ce qui me casse la tête, c'est surtout si la quantité de données que j'aurai à traiter serait trop grande? et aussi si le programme ne trouvera pas de problème à se localiser dans l'un des fichiers à ma demande ?
Une solution qu'on m'a proposé: Créer mes fichiers au début du programme, ne les ouvrir en mode modification qu'en cas de besoin, et les refermer après chaque utilisation.
Est ce que ça n'a pas d'impact sur le temps de traitement? Sachant que la volumétrie de mes données risque d'être trop grande? D'où l'ouverture et la fermeture de mes fichiers serait une tâche à faire et à refaire ?
Merci d'avance pour vos réponse.
Re: [C++] Ecriture simultanée dans plusieurs fichiers
Citation:
Oui, la seule condition c'est qu'il n'y ait pas d'accès concurrentiels (en écriture seulement?). C'est la base pour tout ce qui est "parrallèlisme".
J'ai pas bien saisi ce que tu veux dire par " Accès Concurrentiels " ? :aie:
Pour mes fichiers, je compte les ouvrir tout les trois au début de mon programme en mode création, leurs attribuer un fileName.
Puis, et au fur et à mesure de mon besoin, j'écrirai dans le fichier adéquat l'information souhaité.
Ce n'est qu'à la fin de mon programme que je vais fermer mes trois fichiers.
Merci pour vos réponse, et encore merci pour ton retour Klaim :ccool:
Re: [C++] Ecriture simultanée dans plusieurs fichiers
:ccool: :ccool:
Super les gars. Voilà pourquoi j'aime ce forum.
Merci beaucoup encore une fois.
Re: [C++] Ecriture simultanée dans plusieurs fichiers
Mr Pierre Dolez,
Citation:
Appelle-t-on "creux" un fichier binaire?
Vous auriez du faire cette remarque dès le début de votre intervention pour m'aider à mieux m'exprimer. Mais merci comme même parce que moi au fait, je connaissais pas cette nomination, et je n'ai fait qu'apprendre le terme à travers les gens Métiers (Mes Clients)! Merci encore ;)
Mr jblecanard
Citation:
Merci à toi, je ne connaissais pas l'expression
Mais de rien! Régales toi mon frère 8-)
Mais aujourd'hui, j'ai un autre problème, est c'est pour cela que je vais réouvrir cette discussion: Après avoir parsé mes fichiers XML avec TinyXML, je constitue des lignes dans une chaine de caractères, et chaque ligne est constitué de concaténation de plusieurs données en provenance de plusieurs balises.
Le problème est que lorsque je copie cette chaine de caractère dans mon fichier PLAT de sortie :mrgreen:, j'obtient dans mon fichier des caractères genre
Citation:
Forfait Maitrisé
au lieu d'avoir
Citation:
Forfait Maitrisé
.
J'ai cherché sur internet, et j'ai trouvé que TinyXML supporte l'UTF8, et la méthode que j'utilise pour copier ma chaine de caractères dans le fichier est :
Code:
MonFichier >> MaLigne >> endl
de la classe ofStream qui dérive de std::ios_base.
Donc ma question est: Quel type de sortie nous offre ofStream ? et y'a t'il une autre méthode pour garder mes caractères tel qu'elles sont sur le fichier XML?
Merci d'avance pour vos réponse.
Cordialement
Re: [C++] Ecriture simultanée dans plusieurs fichiers
Merci tout d'abord pour ta réponse rapide. :)
Au fait, le but de mon programme est de transformer un fichier XML en un fichier txt. Ce fichier txt a bien une structure à respecter: (L'ordre des information dans chaque ligne commençant par un code spécifique.) Car dans le programme qui va prendre mon fichier txt, lui il lit les informations depuis une position donnée, et sur un nombre défini de caractères.
Voilà un exemple de ligne du fichier txt de sortie que je dois avoir:
Citation:
MAR100003 FR0300 0101190001011900000000173058
Donc, pour écrire ces données dans la ligne, je dois chercher chaque info à part, vu qu'elles ne se trouvent pas dans le même bloc de mon fichier xml, et les concaténer dans une variable string, et ce pour pouvoir construire ma ligne.
Une fois ma ligne est construite, je la copie dans le fichier txt et j'effectue un retour chariot.
Voilà un exemple de bloc xml d'ou proviennent mes données:
Code:
1 2 3 4 5
| <ligneResumeClient categorie="" codeItem="MensCo" idBloc="0300">
<dateDebut>2010-06-01</dateDebut>
<dateFin>2010-06-29</dateFin>
<montantHT>432.39</montantHT>
</ligneResumeClient> |
Donc, si vous remarquez bien, dans ce bloc xml, j'ai le code ma ligne qui est , mais pas toutes les informations qui constituent ma ligne ne se trouve dans ce bloc. ( Il y a d'autres informations en provenance d'autres balises ou d'autres blocs )
Quand je visualise mon fichier, je trouve que les données qui contiennent les caractères accentués sont affichés différemment.
J'espère que ça t'aidera à m'aider :?
Et merci encore pour tes réponses et tes clarifications.
Cordialement