Supprimer derniere ligne d'un fichier texte

Signaler
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009
-
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
-
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

12 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
tu peux utiliser la méthode SetLength de ton FileStream
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009

Qui fait quoi?
Et comment tu l'utilise?

Merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009

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.
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011

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
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009

Merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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...)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
Messages postés
99
Date d'inscription
vendredi 23 mars 2007
Statut
Membre
Dernière intervention
27 mai 2009

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.
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011

Oki Renfield, je suis vivement interéssé par ce que tu propose. Peut tu donner un exemple simple?
Salutations
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011

Merci pour l'exemple, c'est tres efficace.