.NET Array Dictionary List String Sub ArrayList Cast Class Console Dates DataTable DateTime Enum File For Format If IndexOf Lambda LINQ Nothing Parse Process Property Regex Replace Select Sort Split StringBuilder Substring

VB.NET: File

StreamReader handles text files. We read a text file in VB.NET by Using StreamReader. This will correctly dispose of system resources and make code simpler. The best way to use StreamReader requires some special syntax.

Programming tip

Example. The Using-keyword allows you to automate disposal of the system resources, which is critical for performance and stability. The example reads the first line from file.txt in the local directory.

Note: You need to add a text file called "file.txt" and include it in the build directory ("Copy if newer").

VB.NET program that uses StreamReader

Imports System.IO

Module Module1

    Sub Main()
	' Store the line in this String.
	Dim line As String

	' Create new StreamReader instance with Using block.
	Using reader As StreamReader = New StreamReader("file.txt")
	    ' Read one line from file
	    line = reader.ReadLine
	End Using

	' Write the line we read from "file.txt"
    End Sub

End Module


(Contents of file.)

The program declares a new String instance, which is where it stores the result of ReadLine. Look at how the Using-statement is formed to create the StreamReader. This is the most common usage pattern for StreamReader.

Also: We include the System.IO namespace at the top, with the line "Imports System.IO". This is important to compile the program.


Example 2. Here we see the common operation of using the contents of each line from a text file in a List from System.Collections.Generic. After the Using block, the List contains two String elements, containing line 1 and line 2 from the text file.

VB.NET program that uses StreamReader and List

Imports System.IO

Module Module1

    Sub Main()
	' We need to read into this List.
	Dim list As New List(Of String)

	' Open file.txt with the Using statement.
	Using r As StreamReader = New StreamReader("file.txt")
	    ' Store contents in this String.
	    Dim line As String

	    ' Read first line.
	    line = r.ReadLine

	    ' Loop over each line in file, While list is Not Nothing.
	    Do While (Not line Is Nothing)
		' Add this line to list.
		' Display to console.
		' Read in the next line.
		line = r.ReadLine
	End Using

    End Sub

End Module

This example starts off by declaring a new List(Of String). This instance is a generic List, which means it is strongly-typed and more efficient. The Using-statement is used next, and it opens the "file.txt" file.

Also: There is a local line variable declared, which will store each line as it is read.


Before the loop begins, we read the first line of the file. Then we enter a Do While loop, which continues until the last line read is Nothing. At the end of the program, I inserted a debugger breakpoint to show the contents of the List.


And: I found that there were two string elements, containing Line 1 and Line 2 of the text file we read.

Local variables in debugger
The VB.NET programming language

Summary. Here we saw how to use the Using-statement in VB.NET, along with StreamReader to read in lines from text files. My experience is that StreamReader is well-performing, and you can read my C# benchmarks which would be equivalent.

Finally: There are other methods on the File class that can simplify some of this code, but StreamReader proves to be an important tool.