C/C++ week November Black Friday
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

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

Aktivity (4)
Avatar
3012
Člen
Avatar
3012:18. dubna 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. dubna 16:54
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na 3012
Marek Uhlik:18. dubna 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. dubna 17:59
 
Nahoru Odpovědět
18. dubna 17:58
Avatar
3012
Člen
Avatar
Odpovídá na Marek Uhlik
3012:19. dubna 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. dubna 1:34
Avatar
3012
Člen
Avatar
Odpovídá na Marek Uhlik
3012:19. dubna 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. dubna 1:48
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na 3012
Marek Uhlik:19. dubna 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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět
19. dubna 12:37
Avatar
3012
Člen
Avatar
3012:19. dubna 21:50

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

 
Nahoru Odpovědět
19. dubna 21:50
Avatar
3012
Člen
Avatar
3012:9. května 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. května 19:33
Avatar
Miroslav Jurek:16. října 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. října 14:36
 
Nahoru Odpovědět
16. října 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.