Удалите определенную строку в текстовом файле и замените ее новой строкой vb.net
Я видел этот вопрос здесь несколько раз, но я не могу найти правильный ответ. В настоящее время у меня есть приложение Windows Form, которое я пишу на VB, которое создает профили игроков (это школьный проект). На странице "Регистрация" я беру информацию и читаю ее в текстовый файл с каждым разделителем запятых полей построчно. Это делает для.txt, который выглядит примерно так:
Dan,Boyle,M,39,(707) 555-1234,555 S. West Street,18,D,R
Justin,Braun,M,27,(916) 555-1255,858 W. South St,5,D,L
Я запустил новые строки и назвал это просто отлично, но все, что мне нужно сделать для моего проекта, - это возможность редактировать профиль игрока. На данный момент я обнаружил, что лучшим способом было бы переписать всю строку, что мне удалось сделать. Но я не могу понять, как удалить текущую строку и заменить ее.
Dim FileString As String = "MasterRoster.txt"
Dim index As Integer = Home.cbPlayerLookUp.SelectedIndex
Dim playerInfo() As String = File.ReadAllLines(FileString)
Dim FieldString() As String
Dim RecordString As String = ""
If Not playerInfo.Length < index Then
FieldString = playerInfo(index).Split(","c)
'Update Player stats)
If CInt(FieldString(16)) = index Then
FieldString(12) = CStr(CInt(FieldString(12)) + CInt(txtGoals.Text))
FieldString(13) = CStr(CInt(FieldString(13)) + CInt(txtAssists.Text))
FieldString(14) = CStr(CInt(FieldString(14)) + CInt(txtPIM.Text))
FieldString(15) = CStr(CInt(FieldString(15)) + CInt(txtGames.Text))
'(FirstName0, LastName1, Gender2, Age3, Phone4, Address5, Experience6, Position7, Handedness8, Team9, Jersey#10, imgPath11, Goals12, Assists13, PIM14, Total Games15, playerID Number16)
RecordString = FieldString(0) & "," & FieldString(1) & "," & FieldString(2) & "," & FieldString(3) & "," & FieldString(4) & "," & FieldString(5) &
"," & FieldString(6) & "," & FieldString(7) & "," & FieldString(8) & "," & FieldString(9) & "," & FieldString(10) & "," & FieldString(11) & "," & FieldString(12) & "," &
FieldString(13) & "," & FieldString(14) & "," & FieldString(15) & "," & FieldString(16) & vbNewLine
End If
My.Computer.FileSystem.WriteAllText(FileString, RecordString, True)
End If
В настоящее время это добавит новую строку в конец моего.txt файла "MasterRoster.txt" с обновленной информацией в конце, но старая все еще там. Как я могу вместо этого заменить старую линию?
1 ответ
Поскольку вы читаете весь файл в память, использование класса для представления информации позволяет вам ставить значимые имена для каждого поля.(Помните ли вы, что каждое поле представляет через год или два?) Один из способов хранения коллекции эти данные находятся в DataTable, который очень легко использовать с DataGridView, чтобы отобразить данные для чтения и редактирования. Другой вариант - использовать текстовый формат.xml вместо текстового формата.csv. Это упрощает чтение и запись в файл и из него, поскольку в DataTable есть методы, разработанные для этого.
В любом случае редактирование определенных записей потребует перезаписи или перезаписи файла, если, конечно, вы не хотите сделать шаг назад и использовать старые устаревшие методы, FileOpen, FileGet и FilePut.