24 out of 1256 rated this helpful - Rate this topic

How to: Read Text from a File

The following code examples show how to read text from a text file. The second example notifies you when the end of the file is detected. This functionality can also be achieved by using the ReadAllLines or ReadAllText methods.

using System;
using System.IO;

class Test 
{
    public static void Main() 
    {
        try 
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.txt")) 
            {
                String line;
                // Read and display lines from the file until the end of 
                // the file is reached.
                while ((line = sr.ReadLine()) != null) 
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e) 
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
    }
}
using System;
using System.IO;
public class TextFromFile 
{
    private const string FILE_NAME = "MyFile.txt";
    public static void Main(String[] args) 
    {
        if (!File.Exists(FILE_NAME)) 
        {
            Console.WriteLine("{0} does not exist.", FILE_NAME);
            return;
        }
        using (StreamReader sr = File.OpenText(FILE_NAME))
        {
            String input;
            while ((input=sr.ReadLine())!=null) 
            {
                Console.WriteLine(input);
            }
            Console.WriteLine ("The end of the stream has been reached.");
        }
    }

This code creates a StreamReader that points to MyFile.txt through a call to File.OpenText. StreamReader.ReadLine returns each line as a string. When there are no more characters to read, a message is displayed to that effect, and the stream is closed.

Note Note:

Visual Basic users may choose to use the methods and properties provided by the My.Computer.FileSystem object for file I/O. For more information, see My.Computer.FileSystem Object.

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Robust Programming

The code in the robust programming example will fail if the file is open and locked by another application, Excel for instance, and doesn't actually explain how to use the StreamReader in a robust manner.

A more robust point method of opening the file would be:

StreamReader sr = new StreamReader(new FileStream("MyFile.xls", FileMode.Open, FileAccess.Read, FileShare.Read));

Re:Something missing in C# code
But the C# version of the first code does do a Close() when dispose() is called automatically after the 'Using' block is done, check the dissambler. As for the 2nd version, close() is also done automatically by Using, not sure why it needs to be called manually.
Something missing in C# code
Note that the C# version of the first code doesn't close the stream which is a recommend thing, you can close it (as the second code) by calling sw.Close();