2014-02-16 3 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

Линия, ее чтение имеет более 20 символов после 6-го ... –

+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 
Смежные вопросы