Hola, estoy leyendo un archivo plano de casi 2 millones de registros, hago la lectura linea por linea, luego escribo cada linea en un nuevo archivo y agrego al final dos nuevas columnas con informacion de fecha y un codigo bancario.

el problema es que algunas veces despues de los registros hay saltos de linea: " & vbCrLf & "

cuando el programa llega a ese punto se desorganiza, entonces intente saltando al siguiente registro pero empieza a leer desde el tercer caracter, enonces quiero hacer la lectura no por lineas sino caracter por caracter para poder ignorar cuando encuentre un " & vbCrLf & ", pero toda la información que encuentro habla de leer los archivos linea por linea y no caracter por caracter. Ojala alguien me pueda ayudar, este es el codigo por si acaso:

Dim FileNum As Integer, RecLength As Long, Cabecera1 As Encabezado_Archivo, Cabecera2 As Encabezado_Lote, Det As Detalle, resumen1 As Control_Lote, resumen2 As Control_Archivo
' Calculate the record length.
RecLength = Len(Cabecera1)
Posicion = 1
FileNum = FreeFile()
' Get the next available file number.
' Open the new file with the FileOpen statement.
FileOpen(FileNum, OpenFileDialog1.FileName, OpenMode.Random, , , RecLength)

Dim oSW As New StreamWriter("K:\Formatador Entrada Datamart\Archivos prueba\Nuevo.txt")

FileGet(FileNum, Cabecera1, Posicion)
Posicion = Posicion + 1
FileGet(FileNum, Cabecera2, Posicion)
Posicion = Posicion + 1
FileGet(FileNum, Det, Posicion)
Posicion = Posicion + 1

Dim Encabezado_a As String = Cabecera1.Tip_Reg & Cabecera1.Num_Nit & Cabecera1.Fec_Rec & Cabecera1.Cod_Ent & Cabecera1.Num_Cta & Cabecera1.Fec_arc & Cabecera1.Hor_Arc & Cabecera1.Mod_Arc & Cabecera1.Tip_Cta & vbNewLine
oSW.WriteLine(Encabezado_a)
Dim Encabezado_b As String = Cabecera2.Tip_Reg & Cabecera2.Cod_Ser & Cabecera2.Num_Lot & vbNewLine
oSW.WriteLine(Encabezado_b)

While Cabecera1.Tip_Reg = "01"
While (Det.Tip_Reg = "06")
Dim Detalle_Rec As String = Det.Tip_Reg & Det.Ref_Pal & Det.Val_Rec & Det.Pro_Pag & Det.Med_Pag & Det.Num_Ope & Det.Num_Aut & Det.Cod_Bco & Det.Cod_Suc & Det.Cod_Sec & Det.Cau_Dev & Cabecera1.Fec_Rec & Cabecera1.Cod_Ent & vbNewLine
oSW.WriteLine(Detalle_Rec)
FileGet(FileNum, Det, Posicion)
FileGet(FileNum, resumen1, Posicion)
Posicion = Posicion + 1
FileGet(FileNum, resumen2, Posicion)

If resumen1.Tip_Reg = "08" Then
Dim Res1 As String = resumen1.Tip_Reg & resumen1.Tot_Reg & resumen1.Tot_Rec & resumen1.Num_Lot & vbNewLine
oSW.WriteLine(Res1)
End If
If resumen2.Tip_Reg = "09" Then
FileGet(FileNum, resumen2, Posicion)
Dim Res2 As String = resumen2.Tip_Reg & resumen2.Tot_Reg & resumen2.Tot_Rec & vbNewLine
oSW.WriteLine(Res2)
Posicion = Posicion + 1
End If
End While
Dim Fecaux As String, codbcoaux As String
Fecaux = Cabecera1.Fec_Rec
codbcoaux = Cabecera1.Cod_Ent
FileGet(FileNum, Cabecera1, Posicion)
While Cabecera1.Tip_Reg = "" & vbCrLf & ""
MsgBox("Error en la linea " & Posicion)
Exit Sub
End While
If Cabecera1.Tip_Reg = "01" Then
Dim Encabezado_a1 As String = Cabecera1.Tip_Reg & Cabecera1.Num_Nit & Cabecera1.Fec_Rec & Cabecera1.Cod_Ent & Cabecera1.Num_Cta & Cabecera1.Fec_arc & Cabecera1.Hor_Arc & Cabecera1.Mod_Arc & Cabecera1.Tip_Cta & vbNewLine
oSW.WriteLine(Encabezado_a1)
Posicion = Posicion + 1
FileGet(FileNum, Cabecera2, Posicion)
Dim Encabezado_b1 As String = Cabecera2.Tip_Reg & Cabecera2.Cod_Ser & Cabecera2.Num_Lot & vbNewLine
oSW.WriteLine(Encabezado_b1)
Posicion = Posicion + 1
ElseIf Cabecera1.Tip_Reg = "05" Then
FileGet(FileNum, Cabecera2, Posicion)
Cabecera1.Tip_Reg = "01"
Cabecera1.Cod_Ent = codbcoaux
Cabecera1.Fec_Rec = Fecaux
Dim Encabezado_b1 As String = Cabecera2.Tip_Reg & Cabecera2.Cod_Ser & Cabecera2.Num_Lot & vbNewLine
oSW.WriteLine(Encabezado_b1)
Posicion = Posicion + 1
End If
FileGet(FileNum, Det, Posicion)
Posicion = Posicion + 1
oSW.Flush()

End While

MsgBox("Archivo Formateado en G:\Formatador Entrada Datamart\Archivos prueba\Nuevo.txt")