Read a Complete Text File in One Pass

Read a Complete Text File in One Pass

Typically, you read and process a text file by using a loop and VB’s Line Input statement:

Do While Not Eof(1)	Line Input #1, myStringVar$	' process the line hereLoop

However, you might want to defer processing or keep a copy of all the lines read for repeat processing or selective editing before writing them out again. You can achieve this quite easily by using VB’ Get# and Split() statements to read the entire file at once and split it into an array containing all the lines. For example, this function returns the complete contents of a file as a string:

Public Function ReadFile(ByVal FileName As String) _	As String	Dim hFile As Long	Dim bBuf() As Byte		hFile = FreeFile	Open FileName For Binary Access Read As #hFile	If LOF(hFile) >hen		ReDim bBuf(1 To LOF(hFile)) As Byte		Get #hFile, , bBuf		Close #hFile		ReadFile = StrConv(bBuf, vbUnicode)	End IfEnd Function

This code snippet drops the contents into an array, using the line break (vbCrLf) as a delimiter:

	Dim sLines() As String	Dim sAll As String	Dim i As Long	' Read the contents of some file	sAll = ReadFile("c:form1.frm")	' Split into individual lines	sLines = Split(sAll, vbCrLf)

You can then process the file as desired; for example, you can search for specific lines:

	For i = LBound(sLines) to UBound(sLines)		If Instr(1, "SomeText", sLines(i), _			vbTextCompare) Then			sLines(i) = "SomeOtherText" 		End If	Next i


Share the Post: