shogolat
Messages postés13Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention19 avril 2005
-
19 avril 2005 à 10:57
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
19 avril 2005 à 16:38
Bonjour, pour mon BTS je dois éffectuer des PTI C# , ce sont comme des TP mais servant pour mon BTS.
Je dois en faire une en mode console, c'est à dire sans interface graphique.
j'ai décidé de faire un lexique, les mots se trouvant dans un fichier texte.
j'ai trouvé comment chercher un mot, en ajouter un, mais je bloque sur la suppression.
pour lire :
FileStream fs = new FileStream("lexique.txt", FileMode.Open);
StreamReader sr = new StreamReader (fs,
ASCIIEncoding.Default);
string s = sr.ReadLine();
pour écrire :
FileStream fw = new FileStream("lexique.txt", FileMode.Append);
StreamWriter sw = new
StreamWriter (fw, ASCIIEncoding.Default);
sw.WriteLine(string);
mais pour supprimer je ne sais pas comment faire :s je crois qu'il faut
passer par une sorte de fichier mouvement mais je ne sais pas comment
faire.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 avril 2005 à 11:02
Salut,
Y'a pas de miracle, il faut commencer par lire le file (en le mettant en mémoire) puis fait les traitements dont tu as besoin, et ensuite réécrire le fichier avec les modifications que tu voulais apporter !
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 avril 2005 à 11:53
Bon en fait je me suis un peu emballé avec mon MemoryStream
Voici une solution qui marche, mais c'est un peu rustre. C'est juste pour expliquer le fonctionnement (on peut sans doute faire mieux).
StreamReader sr = new StreamReader("txt.txt");
ArrayList al = new ArrayList();
StreamWriter sw = new StreamWriter("txt1.txt");
string s = string.Empty;
while((s = sr.ReadLine()) != null) al.Add(s); // On lit
sr.Close();
al.RemoveAt(2); // On efface un element
foreach(object o in al) sw.WriteLine(o.ToString()); // On réécrit
sw.Close();
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 avril 2005 à 12:06
ArrayList est un tableau dynamique. On peut y ajouter des éléments dynamiquement avec sa méthode Add(object o).
Donc je lis le fichier (en mettant chaque ligne dans un index de mon tableau dynamique) jusqu'à qu'il n'y ait plus d'élément à lire.
Ensuite j'efface un élément (avec le RemoveAt(int i); c'est un test, dans mon exemple j'efface l'élément 2).
Bien sur, tu effaces ce que tu veux...
Puis pour finir j'itère dans mon ArrayList avec le foreach (qui est maintenant modifié) et j'écris chaque élément de la collection (ArrayList) dans le nouveau fichier (txt1.txt) que je créer.
Je répète qu'on peut surement faire mieux, mais si tu débutes, ça suffit
shogolat
Messages postés13Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention19 avril 2005 19 avril 2005 à 14:58
bon ca fonctionne mais le pb c'est qu'aprés chaque suppresion de mot,
il ajoute de ligne vide à la fin du fichier texte, donc ca pose
probléme quand je veux ajouter un mot par la suite car il ajoute le mot
aprés les lignes vides.