Использование System.io.streamwriter, чтобы написать другую строку

StackOverflow https://stackoverflow.com/questions/3735831

  •  03-10-2019
  •  | 
  •  

Вопрос

Мне нужно обновить счет студентов с новым баллом, но я не могу получить его, чтобы написать в строке, которую студенты текущие оценки его. Это просто удаляет весь текст.

Алекс, Летмет, 0 Дэвид, qwerty1,0 Джон, Пароль, 0 Павел, Лев, 0 Люк, Беннетт, 0 Рональд, Макдональд, 0 Эрин, Немецкий, 0 Лаура, Шотландия, 0 Росс, Дополнительные, 0 Алан, напитки, 0

Try
 fileName = "C:\Documents and Settings\Student\Desktop\Task10\primary4.txt"
 Dim sWriter As New System.IO.StreamWriter(fileName) 
           index = lblPosition.Text
            sWriter.Write(username(index))
            sWriter.Write(",")
            sWriter.Write(password(index))
            sWriter.Write(",")
            sWriter.WriteLine(updatescore(position)
            sWriter.Close()
            MessageBox.Show("Writing file to disk")
            Me.Close()
     Catch ex As Exception
     MessageBox.Show(ex.Message)
End Try
Это было полезно?

Решение

Вы не можете обновить определенную строку в текстовом файле. Вы можете переписать только текстовый файл с нуля или добавить к нему. Что не то, что вы хотите здесь.

Вы должны использовать file.readalllines (), чтобы получить строку [] с строками в текстовом файле. Ищите конкретный элемент в массиве, который вы хотите обновить. Затем напишите все это обратно с помощью file.writeallllines ().

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

Другие советы

Я вижу хотя бы одну дополнительную ошибку здесь (исключение приведет к выходу из файла открытой). Вы должны сделать что-то вроде этого вместо этого:

fileName = "C:\Documents and Settings\Student\Desktop\Task10\primary4.txt"
Dim sWriter As IO.StreamWriter
Try 
    sWriter = New IO.StreamWriter(fileName, True) 
    index = lblPosition.Text       
    sWriter.Write(username(index))
    sWriter.Write(",")
    sWriter.Write(password(index))
    sWriter.Write(",")
    sWriter.WriteLine(updatescore(position)
    MessageBox.Show("Writing file to disk")
Catch ex As Exception
    MessageBox.Show(ex.Message)
Finally
    sWriter.Close()
End Try
Me.Close()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top