Member 13279041 Ответов: 1

Как добавить текст с помощью streamwriter в текстовый файл?


Я создаю свое первое приложение (используя .vb), которое представляет собой приложение для календарных встреч. Я создал его таким образом - у меня есть три текстовых поля, по одному для даты, времени и местоположения. Текстовые записи из текстовых полей отправляются в поле списка. В списке у меня есть кнопка Сохранить, чтобы сохранить записи как встречу в текстовом файле в папке. У меня есть кнопка Показать встречи, чтобы загрузить текстовый файл. Моя проблема заключается в том, что когда я создаю новую встречу, предыдущая запись в текстовом файле перезаписывается, поэтому мне нужно добавить новые записи в поле списка в текстовый файл, сохраняющий встречи.

Что я уже пробовал:

Это код для кнопки Сохранить.
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        IO.Directory.CreateDirectory("C:\Test")
        Dim w As New IO.StreamWriter("C:\Test\01.txt")
        Dim i As Integer

        For i = 0 To ListBox1.Items.Count - 1
            w.WriteLine(ListBox1.Items.Item(i))
        Next
        w.Close()
    End Sub


Это весь код приложения.
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ListBox1.Items.Add(TextBox1.Text)
        ListBox1.Items.Add(TextBox2.Text)
        ListBox1.Items.Add(TextBox3.Text)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        ListBox1.Items.RemoveAt(ListBox1.SelectedIndex())
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged, ListBox1.Click


    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        IO.Directory.CreateDirectory("C:\Test")
        Dim w As New IO.StreamWriter("C:\Test\01.txt")
        Dim i As Integer

        For i = 0 To ListBox1.Items.Count - 1
            w.WriteLine(ListBox1.Items.Item(i))
        Next
        w.Close()
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim r As IO.StreamReader
        r = New IO.StreamReader("C: \Test\01.txt")
        While (r.Peek() > -1)
            ListBox1.Items.Add(r.ReadLine)
        End While
        r.Close()
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        Me.TextBox1.Text = Me.DateTimePicker1.Text

    End Sub
End Class

KarstenK

Это не очень хорошая идея, чтобы использовать каталог на C: напрямую. Получите какой-нибудь пользовательский каталог для этого использования.

Совет: используйте лучшие имена переменных для повышения качества кода. ;-)

1 Ответов

Рейтинг:
7

Michael_Davies

Используйте параметр append, установленный в значение true, см. страницу MSDN;

Конструктор StreamWriter (String, Boolean, Encoding, Int32) (System.IO)[^]

Dim w As New IO.StreamWriter("C:\Test\01.txt", True)


Member 13279041

Спасибо.