Supprimer derniere ligne d'un fichier texte

Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009
- - Dernière réponse : thepoe
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
- 23 avril 2009 à 16:49
S'il vous plais,

en vb.net, est-ce-que quelqu'un pourrait m'aider a trouver une fonction qui supprimerai la dernière ligne d'un fichier txt?
J'ai déjà le code pour lire le nombre de lignes de mon fichier, il n'existe pas de fonction vb.net pour supprimer une ligne en lui passant le numéro de ligne?

Merci
Afficher la suite 

12 réponses

Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
0
Merci
tu peux utiliser la méthode SetLength de ton FileStream
Commenter la réponse de Renfield
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009
0
Merci
Qui fait quoi?
Et comment tu l'utilise?

Merci
Commenter la réponse de cs_tortuedu74
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
Commenter la réponse de Renfield
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009
0
Merci
Ce n'est pas la longueur de mon fichier que je veux, ça je l'ai déjà.
Je veux supprimer la dernière ligne.
Commenter la réponse de cs_tortuedu74
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
0
Merci
Salut

Je pense que tu peur utiliser la recherche de cvCrLf comme suit:

'soit TextBox1 un textbox multiligne
'le string complet peut aussi provenir du fichier dans ton cas
Dim str As String = TextBox1.Text
Dim crPos As Integer
Do
crPos = InStr(str, vbCrLf)
Loop Until crPos <> 0
dim resultat as string=Strings.Left(str, Strings.Len(str) - (crPos + 1))
MsgBox(resultat)

Si ca peut t'aider...
salutations
Commenter la réponse de thepoe
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009
0
Merci
Merci
Commenter la réponse de cs_tortuedu74
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
0
Merci
utiliser la méthode SetLength de ton FileStream te permet de tronquer ce dernier
donc, si tu sais où commence la dernière ligne...

elle sera supprimée.

tout simplement.

voir LastIndexOf pour effectuer la recherche du dernier saut de ligne...

http://msdn.microsoft.com/fr-fr/library/system.string.lastindexof(VS.80).aspx

plus propre que cette boucle autour de InStr (qui est du B6 ou compatibility...)
Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
0
Merci
idem pour
Strings.Len, Strings.Left, vbCrLf et MsgBox qui sont là pour la compatibility.

oubliez ces instructions, désactivez la refernce VisualBasic et commencez a coder en vrai .NET
Commenter la réponse de Renfield
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009
0
Merci
OK, mais mes instruction sont clair (car c'est mon maitre de stage qui m'imposent des contraintes):
coder en aspx et vb.net.
Or la méthode SetLength de FileStream , je n'arrive pas a les utiliser ni dans l'un, ni dans l'autre.
Commenter la réponse de cs_tortuedu74
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
0
Merci
Oki Renfield, je suis vivement interéssé par ce que tu propose. Peut tu donner un exemple simple?
Salutations
Commenter la réponse de thepoe
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
0
Merci
With New System.IO.StreamWriter("C:\a.txt", False)
.WriteLine("Mercure")
.WriteLine("Venus")
.WriteLine("Terre")
.WriteLine("Mars")
.WriteLine("Jupiter")
.WriteLine("Saturne")
.WriteLine("Uranus")
.WriteLine("Neptune")
.Write("Pluton")
.Close()
End With

With New System.IO.FileStream("c:\a.txt", IO.FileMode.Open, IO.FileAccess.ReadWrite)
.Seek(0, IO.SeekOrigin.End)
Do Until .ReadByte() 13 Or .Position 1
.Seek(-2, IO.SeekOrigin.Current)
Loop
.SetLength(.Position - 1)
.Close()
End With
Commenter la réponse de Renfield
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
0
Merci
Merci pour l'exemple, c'est tres efficace.
Commenter la réponse de thepoe