[File]Ecrire dans un fichier text en début de fichier
10 réponses
404 found
Bonjour,
je suis en train de travailler sur les fichiers texts.
j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans
un fichier texte mais à la fin du fichier!
Peut être qu'il ya une propriété pour lui dire d'écrire en début de fichier
ou une astuce que je n'arrive pas à trouver !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Titeuf [VB.Net 2005]
Bonjour, As-tu consulter la réponse à ta question sur le forum codes-sources http://www.vbfrance.com/forum.v2.aspx?IDV0559
"404 found" a écrit dans le message de news:
Bonjour, je suis en train de travailler sur les fichiers texts. j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans un fichier texte mais à la fin du fichier! Peut être qu'il ya une propriété pour lui dire d'écrire en début de fichier ou une astuce que je n'arrive pas à trouver !
Merci de votre aide !
Bonjour,
As-tu consulter la réponse à ta question sur le forum codes-sources
http://www.vbfrance.com/forum.v2.aspx?IDV0559
"404 found" <404found@discussions.microsoft.com> a écrit dans le message de
news: 9DCC5FE9-ED21-4F21-8603-B05F4792D3D0@microsoft.com...
Bonjour,
je suis en train de travailler sur les fichiers texts.
j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans
un fichier texte mais à la fin du fichier!
Peut être qu'il ya une propriété pour lui dire d'écrire en début de
fichier
ou une astuce que je n'arrive pas à trouver !
Bonjour, As-tu consulter la réponse à ta question sur le forum codes-sources http://www.vbfrance.com/forum.v2.aspx?IDV0559
"404 found" a écrit dans le message de news:
Bonjour, je suis en train de travailler sur les fichiers texts. j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans un fichier texte mais à la fin du fichier! Peut être qu'il ya une propriété pour lui dire d'écrire en début de fichier ou une astuce que je n'arrive pas à trouver !
Merci de votre aide !
404 found
je viens de voir la réponse !!
Willi a dis "La solution qui me parait la plus simple est de lire dans un premier temps ton fichier et de récupérer sont contenu. Une fois ceci fait, tu peux récrire ton fichier en concaténant ce que tu as récupérer de ton fichier au ligne que tu veux insérer.
Voici un exemple
Dim sContenu As String Dim sWriteText As String Dim sNewLine As String = "Bonjour........" & ControlChars.CrLf & "Je m'apel toto"
'lecture du fichier sContenu = IO.File.ReadAllText("c:1.txt")
mais bon, le but est d'écrire un fichier log (donc dernier évenement en premier lieux) et le fichier log peut avoir des centaines de lignes, les lires et les écrires me parait un peu lourd !!
Pas de solution plus simple !!
"Titeuf [VB.Net 2005]" a écrit :
Bonjour, As-tu consulter la réponse à ta question sur le forum codes-sources http://www.vbfrance.com/forum.v2.aspx?IDV0559
"404 found" a écrit dans le message de news: > Bonjour, > je suis en train de travailler sur les fichiers texts. > j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans > un fichier texte mais à la fin du fichier! > Peut être qu'il ya une propriété pour lui dire d'écrire en début de > fichier > ou une astuce que je n'arrive pas à trouver ! > > Merci de votre aide !
je viens de voir la réponse !!
Willi a dis "La solution qui me parait la plus simple est de lire dans un
premier temps ton fichier et de récupérer sont contenu.
Une fois ceci fait, tu peux récrire ton fichier en concaténant ce que tu as
récupérer de ton fichier au ligne que tu veux insérer.
Voici un exemple
Dim sContenu As String
Dim sWriteText As String
Dim sNewLine As String = "Bonjour........" & ControlChars.CrLf & "Je
m'apel toto"
'lecture du fichier
sContenu = IO.File.ReadAllText("c:1.txt")
mais bon, le but est d'écrire un fichier log (donc dernier évenement en
premier lieux) et le fichier log peut avoir des centaines de lignes, les
lires et les écrires me parait un peu lourd !!
Pas de solution plus simple !!
"Titeuf [VB.Net 2005]" a écrit :
Bonjour,
As-tu consulter la réponse à ta question sur le forum codes-sources
http://www.vbfrance.com/forum.v2.aspx?IDV0559
"404 found" <404found@discussions.microsoft.com> a écrit dans le message de
news: 9DCC5FE9-ED21-4F21-8603-B05F4792D3D0@microsoft.com...
> Bonjour,
> je suis en train de travailler sur les fichiers texts.
> j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans
> un fichier texte mais à la fin du fichier!
> Peut être qu'il ya une propriété pour lui dire d'écrire en début de
> fichier
> ou une astuce que je n'arrive pas à trouver !
>
> Merci de votre aide !
Willi a dis "La solution qui me parait la plus simple est de lire dans un premier temps ton fichier et de récupérer sont contenu. Une fois ceci fait, tu peux récrire ton fichier en concaténant ce que tu as récupérer de ton fichier au ligne que tu veux insérer.
Voici un exemple
Dim sContenu As String Dim sWriteText As String Dim sNewLine As String = "Bonjour........" & ControlChars.CrLf & "Je m'apel toto"
'lecture du fichier sContenu = IO.File.ReadAllText("c:1.txt")
mais bon, le but est d'écrire un fichier log (donc dernier évenement en premier lieux) et le fichier log peut avoir des centaines de lignes, les lires et les écrires me parait un peu lourd !!
Pas de solution plus simple !!
"Titeuf [VB.Net 2005]" a écrit :
Bonjour, As-tu consulter la réponse à ta question sur le forum codes-sources http://www.vbfrance.com/forum.v2.aspx?IDV0559
"404 found" a écrit dans le message de news: > Bonjour, > je suis en train de travailler sur les fichiers texts. > j'ai vu les classes Write et WriteLine et ces 2 classes écrivent bien dans > un fichier texte mais à la fin du fichier! > Peut être qu'il ya une propriété pour lui dire d'écrire en début de > fichier > ou une astuce que je n'arrive pas à trouver ! > > Merci de votre aide !
Fabien Bezagu
> mais bon, le but est d'écrire un fichier log (donc dernier évenement en premier lieux) et le fichier log peut avoir des centaines de lignes, les lires et les écrires me parait un peu lourd !!
Un fichier log est en général écrit en ajoutant les lignes à la fin. L'inverse est înhabituel et serait plutôt bizzare....
> mais bon, le but est d'écrire un fichier log (donc dernier évenement en
premier lieux) et le fichier log peut avoir des centaines de lignes, les
lires et les écrires me parait un peu lourd !!
Un fichier log est en général écrit en ajoutant les lignes à la fin.
L'inverse est înhabituel et serait plutôt bizzare....
> mais bon, le but est d'écrire un fichier log (donc dernier évenement en premier lieux) et le fichier log peut avoir des centaines de lignes, les lires et les écrires me parait un peu lourd !!
Un fichier log est en général écrit en ajoutant les lignes à la fin. L'inverse est înhabituel et serait plutôt bizzare....
404 found
> > mais bon, le but est d'écrire un fichier log (donc dernier évenement en > premier lieux) et le fichier log peut avoir des centaines de lignes, les > lires et les écrires me parait un peu lourd !!
Un fichier log est en général écrit en ajoutant les lignes à la fin. L'inverse est înhabituel et serait plutôt bizzare....
Bon j'ai voulu faciliter le travail de l'assistance en double cliquant sur le .log, elle aura la dernière ligne en face (mieux de scroller) mais bon vous avez peut être raison à la fin !! je laisse comme ça en attendant les remarques du client !
Merci de votre aide
> > mais bon, le but est d'écrire un fichier log (donc dernier évenement en
> premier lieux) et le fichier log peut avoir des centaines de lignes, les
> lires et les écrires me parait un peu lourd !!
Un fichier log est en général écrit en ajoutant les lignes à la fin.
L'inverse est înhabituel et serait plutôt bizzare....
Bon j'ai voulu faciliter le travail de l'assistance en double cliquant sur
le .log, elle aura la dernière ligne en face (mieux de scroller) mais bon
vous avez peut être raison à la fin !! je laisse comme ça en attendant les
remarques du client !
> > mais bon, le but est d'écrire un fichier log (donc dernier évenement en > premier lieux) et le fichier log peut avoir des centaines de lignes, les > lires et les écrires me parait un peu lourd !!
Un fichier log est en général écrit en ajoutant les lignes à la fin. L'inverse est înhabituel et serait plutôt bizzare....
Bon j'ai voulu faciliter le travail de l'assistance en double cliquant sur le .log, elle aura la dernière ligne en face (mieux de scroller) mais bon vous avez peut être raison à la fin !! je laisse comme ça en attendant les remarques du client !
"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:
Un fichier log est en général écrit en ajoutant les lignes à la fin. L'inverse est înhabituel et serait plutôt bizzare....
Ca depend. Quand on veut gérer des logs "circulaires" ca peut avoir son interêt.
F.
Patrick Philippot
Bonjour,
Bon j'ai voulu faciliter le travail de l'assistance en double cliquant sur le .log, elle aura la dernière ligne en face (mieux de scroller) mais bon vous avez peut être raison à la fin !! je laisse comme ça en attendant les remarques du client !
Une bonne occasion de faire à nouveau un petit discours sur la confusion traitement / présentation.
La manière la plus efficace de stocker vos infos est bien évidemment de faire un append à la fin du fichier. Surtout pour un fichier journal, la préoccupation doit être de ne pas mobiliser trop de temps machine pour simplement stocker une ligne de texte. Plus l'ajout est fréquent, plus cette remarque est valide.
Maintenant, vos enregistrement sont certainement affectés d'une date et espérons le, les champs sont de longeur fixe, au moins les premiers de la ligne. Ce qui veut dire que vous pouvez trier sur la date, sur le type d'enregistrement, etc. Vous pouvez donc écrire facilement une petite visionneuse permettant de charger vos .log et de les voir par date croissante ou décroissante, par type d'enregistrement, etc. A la limite, un éditeur de texte capable de trier sur le contenu d'un bloc (colonnes) fera l'affaire.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Bonjour,
Bon j'ai voulu faciliter le travail de l'assistance en double
cliquant sur le .log, elle aura la dernière ligne en face (mieux de
scroller) mais bon vous avez peut être raison à la fin !! je laisse
comme ça en attendant les remarques du client !
Une bonne occasion de faire à nouveau un petit discours sur la confusion
traitement / présentation.
La manière la plus efficace de stocker vos infos est bien évidemment de
faire un append à la fin du fichier. Surtout pour un fichier journal, la
préoccupation doit être de ne pas mobiliser trop de temps machine pour
simplement stocker une ligne de texte. Plus l'ajout est fréquent, plus
cette remarque est valide.
Maintenant, vos enregistrement sont certainement affectés d'une date et
espérons le, les champs sont de longeur fixe, au moins les premiers de
la ligne. Ce qui veut dire que vous pouvez trier sur la date, sur le
type d'enregistrement, etc.
Vous pouvez donc écrire facilement une petite visionneuse permettant de
charger vos .log et de les voir par date croissante ou décroissante, par
type d'enregistrement, etc. A la limite, un éditeur de texte capable de
trier sur le contenu d'un bloc (colonnes) fera l'affaire.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Bon j'ai voulu faciliter le travail de l'assistance en double cliquant sur le .log, elle aura la dernière ligne en face (mieux de scroller) mais bon vous avez peut être raison à la fin !! je laisse comme ça en attendant les remarques du client !
Une bonne occasion de faire à nouveau un petit discours sur la confusion traitement / présentation.
La manière la plus efficace de stocker vos infos est bien évidemment de faire un append à la fin du fichier. Surtout pour un fichier journal, la préoccupation doit être de ne pas mobiliser trop de temps machine pour simplement stocker une ligne de texte. Plus l'ajout est fréquent, plus cette remarque est valide.
Maintenant, vos enregistrement sont certainement affectés d'une date et espérons le, les champs sont de longeur fixe, au moins les premiers de la ligne. Ce qui veut dire que vous pouvez trier sur la date, sur le type d'enregistrement, etc. Vous pouvez donc écrire facilement une petite visionneuse permettant de charger vos .log et de les voir par date croissante ou décroissante, par type d'enregistrement, etc. A la limite, un éditeur de texte capable de trier sur le contenu d'un bloc (colonnes) fera l'affaire.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
TroXsA - [VB.NET-2005]
Personnellement j'aurait utilisé un tableau (Array) Dans un premier temps lire le fichier et le mettre dans le tableau puis faire insertion de la ligne desirer en debut de mon tableau puis finir par l'ecriture ... mais bon chacun fait comme y veux :) puis mon exemple n'est peut etre pas super bon quand on a un fichier de 80 Mo ...
-- TroXsA http://cerbermail.com/?rIXgaw9Xsl
Personnellement j'aurait utilisé un tableau (Array)
Dans un premier temps lire le fichier et le mettre dans
le tableau puis faire insertion de la ligne desirer en debut
de mon tableau puis finir par l'ecriture ... mais bon
chacun fait comme y veux :)
puis mon exemple n'est peut etre pas super bon quand
on a un fichier de 80 Mo ...
Personnellement j'aurait utilisé un tableau (Array) Dans un premier temps lire le fichier et le mettre dans le tableau puis faire insertion de la ligne desirer en debut de mon tableau puis finir par l'ecriture ... mais bon chacun fait comme y veux :) puis mon exemple n'est peut etre pas super bon quand on a un fichier de 80 Mo ...
-- TroXsA http://cerbermail.com/?rIXgaw9Xsl
Patrick Philippot
Bonjour,
TroXsA - [VB.NET-2005] wrote:
Personnellement j'aurait utilisé un tableau (Array) puis mon exemple n'est peut etre pas super bon quand on a un fichier de 80 Mo ...
Effectivement.
Pour les gros volumes, une solution élégante (dont il faudrait vérifier la performance), consisterait à utiliser un (ou deux) memory mapped file(s).
Délirons un peu (ce qui suit n'est pas n'est pas très orthodoxe sous .Net, l'accès aux MMFs dans cet environnement n'étant pas immédiat. P/invoke nécessaire et peut-être Interop pour l'encapsulation)...
Solution #1
On crée un MMF sur le fichier log existant et avec une taille égale à la taille du fichier + la taille de la ligne à insérer. On fait un move du block mémoire vers la droite en dégageant la place nécessaire à la nouvelle ligne en début de bloc.
Solution #2
On ouvre un MMF sur le log existant. On ouvre un deuxième MMF de taille égale à la taille du log existant + la taille de la ligne à insérer. On écrit la nouvelle ligne en début de buffer. On copie le bloc mémoire représentant le log existant à l'offset pointant après la nouvelle ligne. On ferme les 2 MMF, on détruit le fichier log existant.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Bonjour,
TroXsA - [VB.NET-2005] wrote:
Personnellement j'aurait utilisé un tableau (Array)
puis mon exemple n'est peut etre pas super bon quand
on a un fichier de 80 Mo ...
Effectivement.
Pour les gros volumes, une solution élégante (dont il faudrait vérifier
la performance), consisterait à utiliser un (ou deux) memory mapped
file(s).
Délirons un peu (ce qui suit n'est pas n'est pas très orthodoxe sous
.Net, l'accès aux MMFs dans cet environnement n'étant pas immédiat.
P/invoke nécessaire et peut-être Interop pour l'encapsulation)...
Solution #1
On crée un MMF sur le fichier log existant et avec une taille égale à la
taille du fichier + la taille de la ligne à insérer. On fait un move du
block mémoire vers la droite en dégageant la place nécessaire à la
nouvelle ligne en début de bloc.
Solution #2
On ouvre un MMF sur le log existant. On ouvre un deuxième MMF de taille
égale à la taille du log existant + la taille de la ligne à insérer. On
écrit la nouvelle ligne en début de buffer. On copie le bloc mémoire
représentant le log existant à l'offset pointant après la nouvelle
ligne. On ferme les 2 MMF, on détruit le fichier log existant.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Personnellement j'aurait utilisé un tableau (Array) puis mon exemple n'est peut etre pas super bon quand on a un fichier de 80 Mo ...
Effectivement.
Pour les gros volumes, une solution élégante (dont il faudrait vérifier la performance), consisterait à utiliser un (ou deux) memory mapped file(s).
Délirons un peu (ce qui suit n'est pas n'est pas très orthodoxe sous .Net, l'accès aux MMFs dans cet environnement n'étant pas immédiat. P/invoke nécessaire et peut-être Interop pour l'encapsulation)...
Solution #1
On crée un MMF sur le fichier log existant et avec une taille égale à la taille du fichier + la taille de la ligne à insérer. On fait un move du block mémoire vers la droite en dégageant la place nécessaire à la nouvelle ligne en début de bloc.
Solution #2
On ouvre un MMF sur le log existant. On ouvre un deuxième MMF de taille égale à la taille du log existant + la taille de la ligne à insérer. On écrit la nouvelle ligne en début de buffer. On copie le bloc mémoire représentant le log existant à l'offset pointant après la nouvelle ligne. On ferme les 2 MMF, on détruit le fichier log existant.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr