File.ReadLines 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
读取文件的行。
重载
| 名称 | 说明 |
|---|---|
| ReadLines(String, Encoding) |
读取具有指定编码的文件的行。 |
| ReadLines(String) |
读取文件的行。 |
ReadLines(String, Encoding)
- Source:
- File.cs
- Source:
- File.cs
- 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
应用于文件内容的编码。
返回
文件的所有行或查询结果的行。
例外
.NET Framework 和低于 2.1 的核心版本:.NET path 是长度为零的字符串,仅包含空格,或包含由 GetInvalidPathChars() 方法定义的一个或多个无效字符。
path 是 null。
path 无效(例如,它位于未映射的驱动器上)。
找不到指定的 path 文件。
打开文件时出现 I/O 错误。
path 超出系统定义的最大长度。
调用方没有所需的权限。
注解
使用此方法指定用于读取文件的编码。
和ReadLinesReadAllLines方法不同,如下所示:使用ReadLines时,可以在返回整个集合之前开始枚举字符串的集合。 使用 ReadAllLines时,必须等待返回整个字符串数组,然后才能访问该数组。 因此,处理非常大的文件时, ReadLines 可以更高效。
可以使用该方法 ReadLines 执行以下操作:
- 对文件执行 LINQ to Objects 查询,以获取其行的筛选集。
- 使用该方法将返回的行集合写入文件 File.WriteAllLines(String, IEnumerable<String>, Encoding) ,或使用该方法将其追加到现有文件中 File.AppendAllLines(String, IEnumerable<String>, Encoding) 。
- 创建一个集合的立即填充实例,该实例为其构造函数(如或 <
a0 />)使用 字符串集合。
行定义为由回车符终止的字符序列(“\r”)、换行符(“\n”)、后跟换行符或文件或流的末尾的回车符。 如果文件以换行序列结尾,则不会返回其他空行。 例如,包含"line1\nline2\n"的文件生成与包含"line1\nline2"的文件相同的两行("line1"和"line2")。
适用于
ReadLines(String)
- Source:
- File.cs
- Source:
- File.cs
- 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
要读取的文件。
返回
文件的所有行或查询结果的行。
例外
.NET Framework 和 2.1 之前的 .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;
partial class Example2
{
static void SearchOptionExample()
{
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()} 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
Partial Class Example2
Shared Sub SearchOptionExample()
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.curFile}\t{f.curLine}")
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 Class
注解
方法ReadLinesReadAllLines不同,如下所示:使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;使用ReadAllLines时,必须先等待返回整个字符串数组,然后才能访问数组。 因此,处理非常大的文件时, ReadLines 可以更高效。
可以使用该方法 ReadLines 执行以下操作:
- 对文件执行 LINQ to Objects 查询,以获取其行的筛选集。
- 使用该方法将返回的行集合写入文件 File.WriteAllLines(String, IEnumerable<String>) ,或使用该方法将其追加到现有文件中 File.AppendAllLines(String, IEnumerable<String>) 。
- 创建一个集合的立即填充实例,该实例为其构造函数(如或 <
a0 />)使用 字符串集合。
此方法用于 UTF8 编码值。
行定义为后跟回车符的序列(“\r”)、换行符(“\n”)或紧跟换行符的回车符,或者作为文件或流中字符的最后序列(如果它以无换行序列结尾)。 如果文件以换行序列结尾,则不会返回其他空行。 例如,包含"line1\nline2\n"的文件生成与包含"line1\nline2"的文件相同的两行("line1"和"line2")。