Ergebnis 1 bis 5 von 5
  1. #1
    Bad Times Virus
    Registriert seit
    30.05.2009
    Beiträge
    614

    Standard [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:
    Code:
    C:\123.mp3
    C:\456.mp3
    
    C:\789.mp3
    Die Leerzeile soll es nicht geben.
    ICQ: 599-744-616
    *\ Freund bietet ICQ 6er Digits (UINs) / Stück! +1 gratis 7er Uin! /* - ICQ : 576826717

  2. #2
    CIH-Virus Avatar von krusty
    Registriert seit
    12.10.2008
    Beiträge
    445

    Standard

    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").rep lace("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

  3. #3
    Bad Times Virus Avatar von LeadOr
    Registriert seit
    27.07.2008
    Beiträge
    566

    Standard

    mach indexof(Controlchars.crlf & "deinem text")
    und dann sollte er ja mit dem löschen die zeile drüber anfangen.

  4. #4
    Bad Times Virus
    Registriert seit
    30.05.2009
    Beiträge
    614

    Standard

    Versteh ich nicht ganz..
    Also ich habe eine Listbox:
    Code:
    123.mp3
    456.mp3
    Dann habe ich eine *.txt aus der ausgelesen und in die Listbox eingefügt wird:
    Code:
    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
    ICQ: 599-744-616
    *\ Freund bietet ICQ 6er Digits (UINs) / Stück! +1 gratis 7er Uin! /* - ICQ : 576826717

  5. #5

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard

    Suchst Du Sowas in der Art?
    Code:
        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:
    Code:
    DeleteFileNameFromFile("c:\test.txt", "blub.txt")
    //kürzer
    Code:
        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
    Geändert von inout (22.07.2009 um 18:25 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •