Bonjour à tous!
Je m'adresse à vous ayant un problème que je n'arrive pas à résoudre.
Quelques explications s'imposent :
Je désire modifier un fichier texte qui sert de ressource à une autre application.
Pour ce, je copie le contenu du fichier dans un arrayList, le modifie et pour terminer je réécris entièrement le contenu du fichier.
Lors d'une exécution en pas à pas je constate que le contenu du buffer est bien correcte mais une fois l'écriture réalisé, j'ouvre donc mon fichier texte et il est vide.
En dessous le code de la fonction:
Quelque chose m'échappe, faut t-il fermer l'actuel streamWriter et en instancier un nouveau ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 private void button1_Click(object sender, EventArgs e) { //Création d'une nouvelle ligne si mode création if (!ModeEdition) { //Ecriture à la fin du fichier } //ou Modification d'une ligne existante si mode édition else { //Ecriture sur la ligne concerne (ref au nom du forage) //On copie le fichier en mémoire StreamReader reader = new StreamReader(Filename); string ligne; string[] tabLigne; List<string> ligne_str = new List<string>(); int position = 0; string buff = ""; while ((ligne = reader.ReadLine()) != null) { tabLigne = ligne.Split(';'); for (int i = 0; i < tabLigne.Length; i++) { ligne_str.Add(tabLigne[i]); } } reader.Close(); //On cherche la ligne qui doit être modifiée et on réécrit dans le buffer position = ligne_str.IndexOf(textBox1.Text); ligne_str[position + 1] = textBox2.Text; ligne_str[position + 2] = textBox3.Text; //On réécrit le dans le fichier StreamWriter writer = new StreamWriter(Filename); writer.Write(""); // On efface le contenu du fichier for (int j = 0; j < ligne_str.Count; j++) { if (((j + 1) % 3) != 0) { buff += ligne_str[j]+";"; } else { buff += ligne_str[j] + "\r\n"; } } writer.Write(buff); } }
Partager