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.Using StreamWriter
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").
Program that uses StreamReader: VB.NET 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" Console.WriteLine(line) End Sub End Module Output (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.
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.
Program that uses StreamReader and List: VB.NET 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. list.Add(line) ' Display to console. Console.WriteLine(line) ' Read in the next line. line = r.ReadLine Loop 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.List
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.Nothing
And: I found that there were two string elements, containing Line 1 and Line 2 of the text file we read.
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.