2014-02-16 24 views
0

我有這樣的代碼在VB:vb.net appendline串錯誤

Public Class Form1 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles browsebtn.Click 
    OpenFileDialog1.Filter = "Text Files|*.txt" 
    OpenFileDialog1.Title = "Select Log File" 
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then 
     Dim filename As String = OpenFileDialog1.FileName 
     Using streamreader As New StreamReader(filename) 
      While streamreader.Read 
       Dim line As String = streamreader.ReadLine() 
       Dim date1 As String = line.Substring(6, 6) 
       Dim writer = New StreamWriter("c:\" + date1 + ".txt") 
       writer = File.AppendText(line) 
       writer.Close() 
      End While 
     End Using 

    End If 
End Sub 
End Class 

當我運行它,它給了我一個錯誤:

"startIndex cannot be larger than length of string." 

我在做什麼錯?

+3

你的ReadLine()顯然發現一個少於6個字符的字符串。先檢查。 – LarsTech

+0

它的讀數在第6個字符之後有超過20個字符.. –

+2

*您認爲*它包含所有這些字符,但您可能已經打空行或什麼。這就是爲什麼你需要檢查你閱讀的那一行是否有你期望的內容。 – LarsTech

回答

1

幾個註釋沒有意義,就像在循環結束時發生的錯誤,或者如何檢查字符串長度可能導致文件訪問錯誤。試試這個:

Dim Line as String   
    Dim Date1 As String 

    While streamreader.Read 
    Line = streamreader.ReadLine() 
    If Line.Length > 12 Then 
     date1 = line.Substring(6, 6) 
     Using sw As New StreamWriter("c:\" + date1 + ".txt") 
      sw.Write(line) 
     End Using 
    End If 
    End While