Использование System.IO.StreamWriter для написания другой строки - PullRequest
2 голосов
/ 17 сентября 2010

Мне нужно обновить счет студентов новым счетом, но я не могу заставить его записать в строку, по которой текущие результаты студентов это.Он просто удаляет весь текст.

Алекс, letmein, 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

Ответы [ 2 ]

4 голосов
/ 17 сентября 2010

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

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

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

1 голос
/ 17 сентября 2010

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

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...