File.ReadLines Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Считывает строки файла.
Перегрузки
| ReadLines(String, Encoding) |
Чтение строк файла с заданным кодировкой. |
| ReadLines(String) |
Считывает строки файла. |
ReadLines(String, Encoding)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- 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 и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars().
path
null.
path недопустим (например, он находится на несопоставленном диске).
Файл, указанный path, не найден.
При открытии файла произошла ошибка ввода-вывода.
path превышает определенную системой максимальную длину.
Вызывающий объект не имеет требуемого разрешения.
path указывает файл, доступный только для чтения.
-или-
Эта операция не поддерживается на текущей платформе.
-или-
path — это каталог.
-или-
Вызывающий объект не имеет требуемого разрешения.
Комментарии
Используйте этот метод, чтобы указать кодировку, используемую для чтения файла.
Методы ReadLines и ReadAllLines отличаются следующим образом: при использовании ReadLinesможно начать перечисление коллекции строк перед возвратом всей коллекции. При использовании ReadAllLinesнеобходимо дождаться возврата всего массива строк, прежде чем получить доступ к массиву. Поэтому при работе с очень большими файлами ReadLines может быть более эффективным.
Для выполнения следующих действий можно использовать метод ReadLines.
Выполните LINQ to Objects запросы к файлу, чтобы получить отфильтрованный набор строк.
Напишите возвращаемую коллекцию строк в файл с помощью метода File.WriteAllLines(String, IEnumerable<String>, Encoding) или добавьте их в существующий файл с помощью метода File.AppendAllLines(String, IEnumerable<String>, Encoding).
Создайте немедленно заполненный экземпляр коллекции, которая принимает коллекцию строк IEnumerable<T> для конструктора, например IList<T> или Queue<T>.
Применяется к
ReadLines(String)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- 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 и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars().
path
null.
path недопустим (например, он находится на несопоставленном диске).
Файл, указанный path, не найден.
При открытии файла произошла ошибка ввода-вывода.
path превышает определенную системой максимальную длину.
Вызывающий объект не имеет требуемого разрешения.
path указывает файл, доступный только для чтения.
-или-
Эта операция не поддерживается на текущей платформе.
-или-
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
В следующем примере используется метод ReadLines в запросе LINQ, который перечисляет все каталоги для файлов с расширением .txt, считывает каждую строку файла и отображает строку, если она содержит строку "Майкрософт".
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>).
Создайте немедленно заполненный экземпляр коллекции, которая принимает коллекцию строк IEnumerable<T> для конструктора, например IList<T> или Queue<T>.
Этот метод использует UTF8 для значения кодирования.