This site works best in modern browsers. Looks like you're using an old one, you should upgrade if you can.

Getting Input From Alternative Sources in .NET Console Applications

Using the Console.SetIn Method allows us to specify an alternative source (TextReader stream).

For example suppose we have the following “names.txt” text file:

Sarah
Amrit
Gentry
Jack

We can create a new stream that reads from this file whenever we perform a Console.ReadLine(). Now when we call ReadLine, a line is read from the text file rather than the keyboard.

We can use the Console.OpenStandardInput() method to reset input back to the keyboard.

The code below creates the following output:

Getting Input From Alternative Sources in .NET Console Applications

class Program
{
    static void Main(string[] args)
    {
        // IO exceptions/etc. checking code omitted

        var inputNames = new StreamReader(@"c:\temp\names.txt");

        // Tell console to get its input from the file, not from the keyboard
        Console.SetIn(inputNames);

        // Output each line of the file until no more lines
        string currentName = Console.ReadLine();
        while (currentName != null)
        {
            Console.WriteLine("Read from file: " + currentName);

            currentName = Console.ReadLine();
        }
      

        Console.WriteLine("Press enter to continue");

        // Reset console input to the standard (keyboard) input so we can wait for keyboard enter
        Console.SetIn(new StreamReader(Console.OpenStandardInput()));

        // Wait for keyboard enter
        Console.ReadLine();
    }
}

For more console related tips, check out my Building .NET Console Applications in C# Pluralsight course.

Sorry, comments are closed.

about jason

My Bio Photo

Jason Roberts is a Journeyman Software Developer, Microsoft MVP, writer, Pluralsight author, open source contributor and Windows Phone & Windows 8 app author.

He holds a Bachelor of Science in computing and is an amateur music producer and landscape photographer.

MVP Logo