'Check if the file has any broken records
Dim reader As StreamReader = New StreamReader(fileDirectory)
Dim fileLine As String
Dim stopCheck As Boolean = False
Do While reader.Peek() > -1
fileLine = reader.ReadLine()
'If the line is not start with eCW| then it is a broken record
If Not fileLine.StartsWith("eCW|") Then
stopCheck = True
Exit Do
End If
Loop
reader.Close()
If stopCheck Then
当文本文件包含许多记录时,需要很长时间来验证行。
离。 文件1有500,000条已完成的记录。它将循环遍历所有行,直到它关闭程序。
文件2在文本文件末尾有一个损坏的记录。它必须在找到损坏的记录之前遍历所有行。
有没有办法加快验证过程?
答案 0 :(得分:1)
消除fileLine变量的使用将消除每次迭代的内存分配。
Do While reader.Peek() > -1
'If the line is not start with eCW| then it is a broken record
If Not reader.ReadLine().StartsWith("eCW|") Then
stopCheck = True
Exit Do
End If
Loop
由于字符串是不可变的,因此每次更改字符串时都会发生内存分配。 Link除此之外,我认为您的方法很棒 - 一旦添加了Using
语句,就可以了。
答案 1 :(得分:1)
只是把它放在这里但是......
try
while not reader.readline().startswith("eCWL")
end while
stopCheck = true
catch
stopCheck = false
end try
我猜测当你尝试阅读超出eof时捕获读取异常将是非常值得的,不需要为每条记录进行查看和读取