StreamReader - Coding Sharp

StreamReader

StreamReader class

In my previous article we have have seen how to read from text file using File class and how to write into text file using StreamWriter class. In this article we will see how to read from text file using StreamReader  class.

Using Statements: It is recommended to use using statements while we are using StreamReader class, which ensures that is is removed from the memory once it is no longer needed. The syntax is very easy to use.
StreamReader class reads text file, it is available in System.IO namespace. It provides very good performance. Using StreamReader we can read a file synchronously and asynchronously, we need to provide a relative or absolute path to the file.

Lets check with the example that how to synchronously read a line from text file using StreamReader class. First we need to declare and initialize an instance of StreamReader class with using statement.
Example 1

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        string line;
        using (StreamReader reader = new StreamReader(@"C:\Users\Tarun\Documents\File1.txt"))
        {
            line = reader.ReadLine();
        }
        Console.WriteLine(line);
        Console.Read();
    }
}

Example 2
Now lets check with the example that how to read all the line from a text file using StreamReader class.

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        using (StreamReader reader = new StreamReader(@"C:\Users\Tarun\Documents\File1.txt"))
        {
            while (true)
            {
                string line = reader.ReadLine();
                if (line == null)
                {
                    break;
                }
                Console.WriteLine(line); // Use line.
            }
            Console.Read();
        }
    }
}

In the above example we have used a while loop to read all the line 1 by 1. If we don’t want to use while loop to read whole file then we can also use reader.ReadToEnd() method which will read the content of a text file to the end.

Scope : Scope is a code block between curly braces. Scope allows compiler to make some assumption about the program when some code is unreachable. So garbage collector can reclaimed the program’s memory.

See the below output for example 2

streamreader
streamreader

We have see the synchronous read operation in above both example, now let’s see asynchronous read operation.
asynchronous we need to make async method and have to use await keyword before calling a method.

see the example below.

private async void ReadFileButton_Click(object sender, EventArgs e)
{
    string textFileOutPut = string.Empty;
    try
    {
        using (StreamReader reader = new StreamReader(@"C:\Users\Tarun\Documents\File1.txt"))
        {
            String line = await reader.ReadToEndAsync();
            textFileOutPut = line;
        }
    }
    catch (Exception ex)
    {
        textFileOutPut = "Could not read the file, " + ex.Message;
    }
}

We have created a winform application and put a button called ReadFileButton, and on click event (which we made async) ReadToEndAsync() with await keyword so it will read the given file asynchronously.

Note : With the using statement and StreamReader class we have read a text file. It is a excellent class and useful for many C# programmers.
Download the whole working code here.