File.ReadLines 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
读取文件的行。
重载
| ReadLines(String, Encoding) | 
						 读取具有指定编码的文件的行。  | 
        	
| ReadLines(String) | 
						 读取文件的行。  | 
        	
ReadLines(String, Encoding)
- Source:
 - File.cs
 
- Source:
 - File.cs
 
- Source:
 - File.cs
 
读取具有指定编码的文件的行。
public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ ReadLines(System::String ^ path, System::Text::Encoding ^ encoding);
	public static System.Collections.Generic.IEnumerable<string> ReadLines (string path, System.Text.Encoding encoding);
	static member ReadLines : string * System.Text.Encoding -> seq<string>
	Public Shared Function ReadLines (path As String, encoding As Encoding) As IEnumerable(Of String)
	参数
- path
 - String
 
要读取的文件。
- encoding
 - Encoding
 
应用于文件内容的编码。
返回
文件的所有行或查询结果的行。
例外
低于 2.1 的 .NET Framework 和 .NET Core 版本:path 为零长度的字符串,仅包含空格,或包含由 GetInvalidPathChars() 方法定义的一个或多个无效字符。
              path
              null。
              path 无效(例如,它位于未映射的驱动器上)。
找不到由 path 指定的文件。
打开文件时出现 I/O 错误。
              path 超过系统定义的最大长度。
调用方没有所需的权限。
注解
使用此方法指定用于读取文件的编码。
ReadLines 和 ReadAllLines 方法不同,如下所示:使用 ReadLines时,可以在返回整个集合之前开始枚举字符串的集合。 使用 ReadAllLines时,必须等待返回整个字符串数组,然后才能访问该数组。 因此,在使用非常大的文件时,ReadLines 效率更高。
可以使用 ReadLines 方法执行以下操作:
对文件执行 LINQ to Objects 查询,以获取筛选的行集。
使用 File.WriteAllLines(String, IEnumerable<String>, Encoding) 方法将返回的行集合写入文件,或使用 File.AppendAllLines(String, IEnumerable<String>, Encoding) 方法将其追加到现有文件中。
创建集合的立即填充实例,该实例为其构造函数(例如 IList<T> 或 Queue<T>)获取字符串的 IEnumerable<T> 集合。
适用于
ReadLines(String)
- Source:
 - File.cs
 
- Source:
 - File.cs
 
- Source:
 - File.cs
 
读取文件的行。
public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ ReadLines(System::String ^ path);
	public static System.Collections.Generic.IEnumerable<string> ReadLines (string path);
	static member ReadLines : string -> seq<string>
	Public Shared Function ReadLines (path As String) As IEnumerable(Of String)
	参数
- path
 - String
 
要读取的文件。
返回
文件的所有行或查询结果的行。
例外
低于 2.1 的 .NET Framework 和 .NET Core 版本:path 是一个零长度的字符串,仅包含空格,或者包含由 GetInvalidPathChars() 方法定义的一个或多个无效字符。
              path
              null。
              path 无效(例如,它位于未映射的驱动器上)。
找不到由 path 指定的文件。
打开文件时出现 I/O 错误。
              path 超过系统定义的最大长度。
调用方没有所需的权限。
示例
以下示例读取文件的行,以查找包含指定字符串的行。
foreach (string line in File.ReadLines(@"d:\data\episodes.txt"))
{
    if (line.Contains("episode") & line.Contains("2006"))
    {
        Console.WriteLine(line);
    }
}
for line in File.ReadLines @"d:\data\episodes.txt" do
    if line.Contains "episode" && line.Contains "2006" then
        printfn $"{line}"
For Each line As String In File.ReadLines("d:\data\episodes.txt")
    If line.Contains("episode") And line.Contains("2006") Then
        Console.WriteLine(line)
    End If
Next line
以下示例在 LINQ 查询中使用 ReadLines 方法,该查询枚举具有 .txt 扩展名的文件的所有目录,读取文件的每一行,并在包含字符串“Microsoft”时显示该行。
using System;
using System.IO;
using System.Linq;
class Program
{
    static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath =
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            var files = from file in Directory.EnumerateFiles(docPath, "*.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($"{f.File}\t{f.Line}");
            }
            Console.WriteLine($"{files.Count().ToString()} files found.");
        }
        catch (UnauthorizedAccessException uAEx)
        {
            Console.WriteLine(uAEx.Message);
        }
        catch (PathTooLongException pathEx)
        {
            Console.WriteLine(pathEx.Message);
        }
    }
}
open System
open System.IO
try
    // Set a variable to the My Documents path.
    let docPath =
        Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
    let files =
        query {
            for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
            for line in File.ReadLines file do
            where (line.Contains "Microsoft")
            select {| File = file; Line = line |}
        }
    for f in files do
        printfn $"{f.File}\t{f.Line}"
    printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq
Module Module1
    Sub Main()
        Try
            Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}
            For Each f In files
                Console.WriteLine($"{f.File}\t{f.Line}")
            Next
            Console.WriteLine($"{files.Count} files found.")
        Catch uAEx As UnauthorizedAccessException
            Console.WriteLine(uAEx.Message)
        Catch pathEx As PathTooLongException
            Console.WriteLine(pathEx.Message)
        End Try
    End Sub
End Module
    	注解
ReadLines 和 ReadAllLines 方法不同,如下所示:使用 ReadLines时,可以在返回整个集合之前开始枚举字符串的集合;使用 ReadAllLines时,必须先等待返回整个字符串数组,然后才能访问数组。 因此,在使用非常大的文件时,ReadLines 效率更高。
可以使用 ReadLines 方法执行以下操作:
对文件执行 LINQ to Objects 查询,以获取筛选的行集。
使用 File.WriteAllLines(String, IEnumerable<String>) 方法将返回的行集合写入文件,或使用 File.AppendAllLines(String, IEnumerable<String>) 方法将其追加到现有文件中。
创建集合的立即填充实例,该实例为其构造函数(例如 IList<T> 或 Queue<T>)获取字符串的 IEnumerable<T> 集合。
此方法对编码值使用 UTF8。