Bonjour ,
Je veux écrire un code,qui me permet de supprimer la première ligne d'un fichier .txt
Merci pour votre aide
Bonjour ,
Je veux écrire un code,qui me permet de supprimer la première ligne d'un fichier .txt
Merci pour votre aide
Une solution:
-Charger le fichier Texte dans une liste de string, excepter la première ligne
-Réécrire le fichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 foreach (string line in listeLine) { writer.WriteLine(line); }
Merci pour votre réponse
Mais c'est pas très claire
je veux faire la suppression dans le même fichier, pour que je réécris le fichier?
Malheureusement ce n'est pas si simple, pour écrire une ligne à la suite : Rien de plus simple!
Mais pour supprimer une ligne présent dans le .txt il faut que tu recrées le fichier .txt (ce qui implique suppression de l'ancien et création du nouveau .txt).
Sauf erreur de ma part...
Bonjour,
La solution que t'as proposée FrameBreak est très bien, mais ne t'attends pas à avoir le code tout fait, même si entre nous il n'est pas difficile...
L'algorithme c'est charger le contenu du fichier (Les lignes du fichier), supprimer la première ligne et réécrire le fichier au même emplacement en supprimant au préalable le précédent.
Maintenant, si tu ne comprends pas ou que tu n'y arrives pas, envoie nous ton code et nous seront ravi de pouvoir t'aider à comprendre.
Cordialement
Voici une solution qui supprime la première ligne (rien que la première ligne):
J'affiche le fichier dans un champ textbox, grâce à la boucle "while" et je stocke la première ligne dans une variable "vide" qui stocke la première mais ne l'affiche pas et dans l'autre bouton, je sauvegarde le fichier, libre à toi de modifier le code pour l'adapter à tes besoins.
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 string url; private void button1_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK) { url = open.FileName; label1.Text = url; textBox1.Clear(); string line; System.IO.StreamReader file = new System.IO.StreamReader(url); string vide = file.ReadLine(); while ((line = file.ReadLine()) != null) { textBox1.Text += line + "\r\n"; } file.Close(); } } private void button2_Click(object sender, EventArgs e) { SaveFileDialog save = new SaveFileDialog(); if (save.ShowDialog() == System.Windows.Forms.DialogResult.OK) { System.IO.StreamWriter file = new System.IO.StreamWriter(save.FileName); file.WriteLine(textBox1.Text); file.Close(); } }
J'ai trouvé une solution.
Merci infiniment pour vos aides
Ma solution est la suivante :
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 String line = null; int line_number = 0; int lines_to_delete = 1; string FileName = Dts.Connections["TEST_SANS_ENTETE"].ConnectionString; string tempFileName = FileName + ".temp"; using (StreamReader reader = new StreamReader(FileName)) { using (StreamWriter writer = new StreamWriter(tempFileName)) { while ((line = reader.ReadLine()) != null) { line_number++; if (line_number <= lines_to_delete) continue; writer.WriteLine(line); } } } if (File.Exists(tempFileName)) { File.Delete(FileName); File.Move(tempFileName, FileName); } // TODO: Add your code here Dts.TaskResult = (int)ScriptResults.Success;
Un peu compliqué, je trouve et donc je propose ma solution si quelqu'un en aurait besoin:
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 string url = @"C:\test.txt"; string fichier = null; string line; int number = 0; System.IO.StreamReader file = new System.IO.StreamReader(url); while ((line = file.ReadLine()) != null) { number++; if (number <= 1) continue; fichier += line + "\r\n"; } file.Close(); System.IO.StreamWriter file2 = new System.IO.StreamWriter(url); file2.WriteLine(fichier); file2.Close();
Merci infiniment Micmaya
Effectivement ta solution est plus simple .
C'est une bonne solution. Il y a une légère amélioration possible pour avoir un fichier temporaire : le plus simple est d'utiliser Path.GetTemporaryFilename()
Par contre, la solution de Micmaya est mauvaise pour deux raisons :
- elle oblige le chargement du fichier complet en mémoire. Pour des petits fichiers, pas de soucis, mais pour des gros, cela pourrait poser des problèmes
- elle concatène énormément de string, ce qui n'est pas hyper performant (chaque concaténation nécessite de nouvelles allocations mémoires et des copies des chaines de caractères). La consommation mémoire sera donc d'autant plus importante, et les copies ralentiront grandement le processus dans le cas de fichier volumineux. Mais ce point peut être amélioré en utilisant un StringBuilder en lieu et place d'une String.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager