devxlogo

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
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist