2011-08-05 14 views
0

Niphoetがスタックオーバーフローに関する質問と同じ問題を抱えています。Overwrite a specific line in a text file using 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

あなたが行でテキストファイルの行を読みたい場合は、その後にコードを変更:

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ではなく、線でそれをラインを読み取りませんストリームの内容全体を読み込みます...

+0

私はそれを試みましたが、まだ新しいファイルが作成されていますが、空白のファイルだけです。私は間違って何をしていますか?私はまた、それが必要ではないことが分かったので、Dim objReader As New System.IO.StreamReader(fileName)から真実を取り除いた。コードは私には意味がありますが、なぜファイルに書き込まれていないのか分かりません – user877806

+0

あなたのwhileループの問題は修正されました。私はtanskの上に貼り付けた更新コードをご覧ください – Waqas

+0

ITが働いた!どうもありがとうございます!私はその仕事をするために数時間かけて努力しました! – user877806

関連する問題