Supprimer derniere ligne d'un fichier texte

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

12 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 avril 2009 à 15:01
tu peux utiliser la méthode SetLength de ton FileStream
0
cs_tortuedu74 Messages postés 99 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 27 mai 2009
23 avril 2009 à 15:05
Qui fait quoi?
Et comment tu l'utilise?

Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 avril 2009 à 15:09
0
cs_tortuedu74 Messages postés 99 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 27 mai 2009
23 avril 2009 à 15:12
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thepoe Messages postés 30 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 1 juin 2011
23 avril 2009 à 15:14
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
0
cs_tortuedu74 Messages postés 99 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 27 mai 2009
23 avril 2009 à 15:18
Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 avril 2009 à 15:21
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...)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 avril 2009 à 15:22
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
0
cs_tortuedu74 Messages postés 99 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 27 mai 2009
23 avril 2009 à 15:32
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.
0
thepoe Messages postés 30 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 1 juin 2011
23 avril 2009 à 16:19
Oki Renfield, je suis vivement interéssé par ce que tu propose. Peut tu donner un exemple simple?
Salutations
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 avril 2009 à 16:33
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
0
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
Merci pour l'exemple, c'est tres efficace.
0
Rejoignez-nous