Чтение и запись специфической строки из текстового файла - PullRequest
0 голосов
/ 05 августа 2011

У меня та же проблема, что и у Niphoet в вопросе переполнения стека Перезапись определенной строки в текстовом файле с использованием VB.NET .

реализовать код, который Axarydax показал в C #, который я пытаюсь перевести для использования в VB.NET.Моя проблема в том, что код создаст мой новый текстовый файл, но он не запишет в него ни одной строки из другого текстового файла и просто оставит его пустым.Я думаю, что моя проблема с оператором цикла while, но я не уверен.Вот что у меня есть:

 Private Sub submitButton_Click(ByVal sender As System.Object, ByVal e As       System.EventArgs) Handles submitButton.Click
    Dim trackname As String
    Dim fso
    fso = CreateObject("Scripting.FileSystemObject")
    trackname = TrackComboBox.Text
    Dim fileName As String = "C:\Papyrus\NASCAR3\tracks\" + trackname + "\" + trackname + ".txt"
    Dim newfile As String = "C:\Papyrus\NASCAR3\tracks\" + trackname + "\" + "copy.txt"
    If System.IO.File.Exists(fileName) Then

        Dim objReader As New System.IO.StreamReader(fileName, True)
        Dim objWriter As New System.IO.StreamWriter(newfile, False)
        Dim line
        'write back
        While (line = objReader.ReadToEnd() <> Nothing)
            If (line.StartsWith("RELS")) Then
                objWriter.WriteLine(relstTextBox.Text)
            Else
                objWriter.WriteLine(line)
            End If

        End While
        objReader.Close()
        objWriter.Close()
    Else
        MessageBox.Show("Could not find " + trackname + " track text file sucessfully")
    End If
End Sub

1 Ответ

1 голос
/ 05 августа 2011

Если вы хотите читать текстовый файл построчно, измените код на:

Dim line As String = ""

'Write back
line = objReader.ReadLine()
While Not line Is Nothing
    If (line.StartsWith("RELS")) Then
        objWriter.WriteLine(relstTextBox.Text)
    Else
        objWriter.WriteLine(line)
    End If

    line = objReader.ReadLine()
End While

ReadToEnd не читает строку за строкой, а читает все содержимое потока ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...