Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Visual Basic NET zmazanie poledneho riadkyu v textovom súbore

Aktivity
Avatar
3012
Člen
Avatar
3012:18.4.2019 16:54

Dobrý ďeň, potreboval by som sa opýtať, ako sa dá prostredníctvom stream writeru vo VB.net zmazať posledný riadok v textovom súbore. na internete som nič moc nenašiel. ďakujem za každú odpoveď

 
Odpovědět
18.4.2019 16:54
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na 3012
Marek Uhlik:18.4.2019 17:58

Když máš už nějaký soubor vytvořený tak pomocí stream readeru přečteš soubor, odstranis poslední řádek a znovu zapíšeš pomocí stream writeru.
A když teprve ten soubor vytváříš tak tam prostě zápis toho posledního řádku vynechaš.

Ještě by se dalo udělat, že by si četl soubor od konce a smazal první řádek, ale ten první způsob je mnohem lehčí.

Editováno 18.4.2019 17:59
 
Nahoru Odpovědět
18.4.2019 17:58
Avatar
3012
Člen
Avatar
Odpovídá na Marek Uhlik
3012:19.4.2019 1:34

Ahoj, veľmy ti ďakujem za odpoveď. skušal som to podla nej vyriešiť, no môj pokus riadky nezmazáva, ale pridáva, mohol by si mi napýsať ako mám upraviť nasledujuci kod? mislel som že keď odčitam od end of stream 1, tak to posledný riadok zmaže, ale ono to ešte riadky pridava. prosím ako mám upravit tento kód?

 Private Sub deleteStepBtn_Click(sender As Object, e As RoutedEventArgs) Handles deleteStepBtn.Click

        Using sr As New StreamReader(filename)
            While Not sr.EndOfStream - 1
                load = load + sr.ReadLine() + ControlChars.NewLine
            End While

            load = ""

        End Using

        Using sw As New StreamWriter(filename, True)
            sw.WriteLine(load)
        End Using
    End Sub
End Class
 
Nahoru Odpovědět
19.4.2019 1:34
Avatar
3012
Člen
Avatar
Odpovídá na Marek Uhlik
3012:19.4.2019 1:48

skušal som tiež odstraniť: load = "" takto:

Private Sub deleteStepBtn_Click(sender As Object, e As RoutedEventArgs) Handles deleteStepBtn.Click

        Using sr As New StreamReader(filename)
            While Not sr.EndOfStream - 1
                load = load + sr.ReadLine() + ControlChars.NewLine
            End While


        End Using

        Using sw As New StreamWriter(filename)
            sw.WriteLine(load)
        End Using

    End SubPrivate Sub deleteStepBtn_Click(sender As Object, e As RoutedEventArgs) Handles deleteStepBtn.Click

        Using sr As New StreamReader(filename)
            While Not sr.EndOfStream - 1
                load = load + sr.ReadLine() + ControlChars.NewLine
            End While


        End Using

        Using sw As New StreamWriter(filename)
            sw.WriteLine(load)
        End Using

    End Sub

ale neuspešne

 
Nahoru Odpovědět
19.4.2019 1:48
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na 3012
Marek Uhlik:19.4.2019 12:37

Když bych se držel toho tvého tak by to mohlo vypadat nějak takhle:

Private Sub deleteStepBtn_Click(sender As Object, e As RoutedEventArgs) Handles deleteStepBtn.Click

        Using sr As New StreamReader(filename)
            While Not sr.EndOfStream
                load = load + sr.ReadLine() + ControlChars.NewLine
            End While
        End Using

        load = load.Remove(load.LastIndexOf(ControlChars.NewLine))
        If (load.Contains(ControlChars.NewLine)) Then
            load = load.Remove(load.LastIndexOf(ControlChars.NewLine))
        End If


        Using sw As New StreamWriter(filename)
            sw.Write(load)
        End Using
    End Sub
End Class

Nebo třeba pomocí listu by to vypadalo podobně, těch možností je spousta.
Třeba když jde pouze o nový řádek tak stačí buď tam nechat

load = load.Remove(load.LastIndexOf(ControlChars.NewLine))

nebo

Using sw As New StreamWriter("C:\Users\JsemJ\Desktop\as.txt", False)
    sw.Write(load.TrimEnd(ControlChars.NewLine.ToCharArray()))
End Using
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.4.2019 12:37
Avatar
3012
Člen
Avatar
3012:19.4.2019 21:50

ahoj, vaľmy ti ďakujem, už mi všetko funguje tak ako má

 
Nahoru Odpovědět
19.4.2019 21:50
Avatar
3012
Člen
Avatar
3012:9.5.2019 19:33

ahoj, prosím ťa kde robím chibu? tento kód funguje ale to len dovtedy kím sa nezmazáva posledný riadok v súbore. potom miesto toho aby riadok zmazal pridá k nemu jeho kopiu, teda ak mam na prvom riadku ahoj- výsledok je :ahojahoj ale to iba ak sa pri zmazavaní dostanem na začiatok súboru, za odpovede ďakujem

Using sr As New StreamReader(filename)
           While Not sr.EndOfStream
               load = load + sr.ReadLine() + ControlChars.NewLine
           End While
       End Using

       load = load.Remove(load.LastIndexOf(ControlChars.NewLine))
       If (load.Contains(ControlChars.NewLine)) Then
           load = load.Remove(load.LastIndexOf(ControlChars.NewLine))
       End If


       Using sw As New StreamWriter(filename)
           sw.WriteLine(load)
       End Using

       load = ""
 
Nahoru Odpovědět
9.5.2019 19:33
Avatar
Miroslav Jurek:16.10.2019 14:34

Aj takto by to slo...

  Sub removeLastLineFromFile(filename As String)
    Dim text() As String = IO.File.ReadAllLines(filename)
    If (text.Length) > 0 Then Array.Resize(Of String)(text, text.Length - 1)
    IO.File.WriteAllLines(filename, text)
End Sub
Editováno 16.10.2019 14:36
 
Nahoru Odpovědět
16.10.2019 14:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.