File.ReadLines Method (String)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Reads the lines of a file.

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

public static IEnumerable<string> ReadLines(
	string path


Type: System.String

The file to read.

Return Value

Type: System.Collections.Generic.IEnumerable<String>

All the lines of the file, or the lines that are the result of a query.

Exception Condition

path is a zero-length string, contains only white space, or contains one or more invalid characters defined by the GetInvalidPathChars method.


path is null.


path is invalid (for example, it is on an unmapped drive).


The file specified by path was not found.


An I/O error occurred while opening the file.


path exceeds the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters and file names must be less than 260 characters.


The caller does not have the required permission.


path specifies a file that is read-only.


This operation is not supported on the current platform.


path is a directory.


The caller does not have the required permission.

The ReadLines and ReadAllLines methods differ as follows: When you use ReadLines, you can start enumerating the collection of strings before the whole collection is returned; when you use ReadAllLines, you must wait for the whole array of strings be returned before you can access the array. Therefore, when you are working with very large files, ReadLines can be more efficient.

You can use the ReadLines method to do the following:

This method uses UTF8 for the encoding value.

The following example reads the lines of a file to find lines that contain specified strings.

foreach (string line in File.ReadLines(@"d:\data\episodes.txt"))
    if (line.Contains("episode") & line.Contains("2006"))

The following example uses the ReadLines method in a LINQ query that enumerates all directories for files that have a .txt extension, reads each line of the file, and displays the line if it contains the string "Microsoft".

using System;
using System.IO;
using System.Linq;

class Program
    static void Main(string[] args)
            var files = from file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                            File = file,
                            Line = line

            foreach (var f in files)
                Console.WriteLine("{0}\t{1}", f.File, f.Line);
			Console.WriteLine("{0} files found.", files.Count().ToString());
        catch (UnauthorizedAccessException UAEx)
        catch (PathTooLongException PathEx)

Universal Windows Platform
Available since 10
.NET Framework
Available since 4.0
Available since 4.0
Return to top