2011-08-05 44 views
0

我有同樣的問題,Niphoet在堆棧溢出問題Overwrite a specific line in a text file using VB.NET從文本文件讀取和寫入specfic行

我想實現的是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

它工作正常!非常感謝!我嘗試了幾個小時來完成這項工作! – user877806