Toujours ecrire resultat en premiere ligne d'un fichier texte [Résolu]

IslandMan974 104 Messages postés mercredi 4 mai 2005Date d'inscription 27 juin 2007 Dernière intervention - 25 janv. 2007 à 15:58 - Dernière réponse : IslandMan974 104 Messages postés mercredi 4 mai 2005Date d'inscription 27 juin 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 26 janv. 2007 à 08:21
+3
Utile
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-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
IslandMan974 104 Messages postés mercredi 4 mai 2005Date d'inscription 27 juin 2007 Dernière intervention - 26 janv. 2007 à 13:13
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de IslandMan974
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 25 janv. 2007 à 22:08
0
Utile
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-
Commenter la réponse de cs_Bidou
IslandMan974 104 Messages postés mercredi 4 mai 2005Date d'inscription 27 juin 2007 Dernière intervention - 25 janv. 2007 à 22:30
0
Utile
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
Commenter la réponse de IslandMan974
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 25 janv. 2007 à 23:26
0
Utile
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-
Commenter la réponse de cs_Bidou
IslandMan974 104 Messages postés mercredi 4 mai 2005Date d'inscription 27 juin 2007 Dernière intervention - 25 janv. 2007 à 23:35
0
Utile
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. 
Commenter la réponse de IslandMan974
IslandMan974 104 Messages postés mercredi 4 mai 2005Date d'inscription 27 juin 2007 Dernière intervention - 26 janv. 2007 à 10:23
0
Utile
ah ok j ai compris
je vais voir ca de suite

merci j'espere a tt a l heure avec la solution...
Commenter la réponse de IslandMan974

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.