Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.NET] Zeile aus Datei auslesen und löschen
Hi,
ich möchte eine Favouritenliste erstellen. Wenn ich eine Datei hinzufüge, wird der Dateipfad in eine .txt geschrieben und der Dateiname als Listbox1.Item.Add(...). Wenn ich diesen nun entfernen will dachte ich, ich lasse den Namen des Eintrages mit "IndexOf" in der .txt suchen. Aber wie kann ich diese Zeile jetzt komplett aus der .txt löschen, damit beim Einlesen kein leerer Eintrag gemacht wird? Also nicht:
C:\123.mp3
C:\456.mp3
C:\789.mp3
Die Leerzeile soll es nicht geben.
ufff also ich würde es so machen (gibt sicherlich bessere methoden)
dim alle_titel as string = io.filesystem.readalltext("C:\Playerlist.txt")
dim Zeilenarray() as string = alle_titel.split(vbCrLf)
nun hast du in Zeilenarray(0) die erste zeile, in Zeilenarray(1) die zweite zeile.
Wenn du jedoch den namen des Liedes hast, geht das ganz einfach. zB
dim meine_playerlist as string = io.filesystem.readalltext("C:\Playerlist.txt").replace("Love is gone.mp3","")
Du ersetzt zB den Titel Love is gone durch NICHTS.
dann müsstest du die überatbeitete Textdatei wieder speichern lassen.
Uf sind bestimmte ne menge fehler drinne, aber hoffe es hilft dir
mach indexof(Controlchars.crlf & "deinem text")
und dann sollte er ja mit dem löschen die zeile drüber anfangen.
Versteh ich nicht ganz..
Also ich habe eine Listbox:
123.mp3
456.mp3
Dann habe ich eine *.txt aus der ausgelesen und in die Listbox eingefügt wird:
C:\User\Musik\123.mp3
C:\User\Musik\456.mp3
Wenn ich nun im Programm den Eintrag "456.mp3" markiere und aus der Listbox löschen will, soll auch C:\User\Musik\456.mp3 aus der *.txt gelöscht werden, damit dieser Wert beim nächsten mal nichtmehr ausgelesen wird.
Sollte nun verständlicher sein :)
Suchst Du Sowas in der Art?
Private Function ExtractFileNameFromPath(ByVal FilePath As String) As String
Return FilePath.Substring(FilePath.LastIndexOf("\") + 1)
End Function
Private Sub DeleteFileNameFromFile(ByVal FilePath As String, ByVal FileName As String)
Dim Lines As New List(Of String)
Dim Line As String
Dim sr As New System.IO.StreamReader(FilePath)
While Not sr.EndOfStream
Line = sr.ReadLine
If ExtractFileNameFromPath(Line) <> FileName Then
Lines.Add(Line)
End If
End While
sr.Close()
sr.Dispose()
Dim sw As New System.IO.StreamWriter(FilePath)
For Each Line In Lines
sw.WriteLine(Line)
Next
sw.Close()
sw.Dispose()
End Sub
Aufruf:
DeleteFileNameFromFile("c:\test.txt", "blub.txt")//kürzer
Private Sub DeleteFileNameFromFile1(ByVal FilePath As String, ByVal FileName As String)
Dim Lines() As String = IO.File.ReadAllLines(FilePath)
Dim sw As New System.IO.StreamWriter(FilePath)
For Each Line In Lines
If ExtractFileNameFromPath(Line) <> FileName Then
sw.WriteLine(Line)
End If
Next
sw.Close()
sw.Dispose()
End Sub
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.