Toujours ecrire resultat en premiere ligne d'un fichier texte

Résolu
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 - 25 janv. 2007 à 15:58
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 - 26 janv. 2007 à 13:13
Bonjour,
J 'ai realiser une petite application qui lit des xml et enregistre les valeurs dans un fichier .txt:
Tout marche.Les valeurs s'ecrivent les unes en dessous des autres.

Mom probleme c'est que je voudrais ecrire les resultats toujours en premiere ligne de mon fichier texte.En fait que le resultat le plus recent soit en haut de la pile:

Comment faire..

Merci d avance

7 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
26 janv. 2007 à 08:21
Oui c'est bien ce que je disais, tu dois d'abord lire le fichier (mettre le contenu en mémoire), rajouter les données à l'avant de ton Stream, puis ensuite écrire ton nouveau contenu dans le fichier.
C'est pas possible d'écrire directement au début...

<hr />
-Blog-
3
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
26 janv. 2007 à 13:13
Ok c'est regle merci :.....

Voila le code dans ma classe pricipüale

if (
File.Exists(cvsFile.checKPath())){

//lire le fichier present est le mettre dans un ArraylistNewCurveHistoryFile=cvsFile.ReadCurveHistoryValue();

//Ajouter la derniere ligne recueillie a mon arraylist en position 0NewCurveHistoryFile.Insert(0, NewLine);

//je transforme mon arraylist en array de type string et ensuite j 'ecris mon fichier texte

// en utilisant File.WriteAllLines(string path,string[] contents)

//cette methode overwrite le fichier present avec les valeurs de mon arraylistcvsFile.UpdateCurveHistoryFile((

string[])NewCurveHistoryFile.ToArray(
typeof(
string)));}

else {cvsFile.CreateFile(NewLine);}
et voic ma classe CurveHistoryFile()

public

class
CurveHistoryFile{

String CurveHistoryPath =
@"C:\Documents and Settings\D705846\Desktop\CurveHistory.csv";

ArrayList oldTextInCurveHistoryFile =
new
ArrayList(); 

public CurveHistoryFile(){

//

// TODO: Add constructor logic here

//

}

public
void CreateFile(
string Values){

try{

StreamWriter monStreamWriter =
new
StreamWriter(
this.CurveHistoryPath);

//Server.MapPath("./") + @"admin\logs" + fichier);

//Write new values in the FilemonStreamWriter.WriteLine(Values);

// close StreamWriter monStreamWriter.Close();

}

catch (
Exception ex){

// Code exécuté en cas d'exception

//Response.Write(ex.Message);}

}

public
void UpdateCurveHistoryFile(
string[] Values){

File.WriteAllLines(
this.CurveHistoryPath,Values);

}

public
string CkecKPath() {

return CurveHistoryPath;}

public
ArrayList ReadCurveHistoryValue(){

try{

StreamReader CurveHistoryStreamReader =
new
StreamReader(CurveHistoryPath);

string line = CurveHistoryStreamReader.ReadLine();oldTextInCurveHistoryFile.Add(line);

while (line !=
null){

line = CurveHistoryStreamReader.ReadLine();

oldTextInCurveHistoryFile.Add(line);

}

CurveHistoryStreamReader.Close();

}

catch (
Exception ex){

//throw ex.Message;}

return oldTextInCurveHistoryFile;}

}

Encore merci Bidou

A plus sur CS
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
25 janv. 2007 à 22:08
Salut,
Si le programme n'est pas fermé pendant les écritures, tu peux t'arranger pour faire ça en mémoire (MemoryStream?).
Si par contre le programme est fermé entre temps, tu dois parser ton fichier à l'ouverture, faire ton ajout en mémoire en début de Stream, et ensuite écrire le fichier.
Je ne vois pas d'autres solutions....

<hr />
-Blog-
0
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
25 janv. 2007 à 22:30
Merci..

En fait je vais chercher mes infos dans le xml ,ca reprensente une vingtaine de chiffres que je mets dans un tableau .
Une fois mon tableau remplit ,je concatene mes valeurs separer par des virgules ,pour en faire une seule ligne.

Ensuite je verifie si mon fichier .txt existe

Si oui je l'ouvre et j' ecris ma ligne

sinon je creer mon fichier et j'ecris ma ligne.

Je pense que mon programme n'est pas fermée...enfin j'ai  pas tout compris au programme fermé ou ouvert
Merci quand meme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
25 janv. 2007 à 23:26
Ce que je voulais dire par là, c'est que soit t'as toutea les infos en mémoire : dans ce cas tu tries en mémoires et tu écris, soit tu dois lire les valeurs du fichier, ensuite tu tries, puis tu écris.

<hr />
-Blog-
0
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
25 janv. 2007 à 23:35
je crois que j' ai mal pose mon probleme ....
En fait je voudrais a chaque fois que j'ajoute une ligne a mon fichier celle si figure en premiere ligne.

Par exemple si aujourd hui je fais tourner  mon programme j' ai  ma premiere ligne de 20 valeurs dans mon fichier texte.
Et si demain je le refais tourner ,je voudrais que mon resultat ,(soit 20 autres valeurs )soit au dessus des 20 anciennes valeurs.
et ainsi de suite. 
0
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
26 janv. 2007 à 10:23
ah ok j ai compris
je vais voir ca de suite

merci j'espere a tt a l heure avec la solution...
0
Rejoignez-nous