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 для значения кодирования.