File.ReadLines Метод

Определение

Считывает строки файла.

Перегрузки

ReadLines(String)

Считывает строки файла.

ReadLines(String, Encoding)

Считывает строки файла с заданной кодировкой.

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, считывает каждую строку файла и отображает строку, если она содержит строку "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>) метода .

  • Create немедленно заполненный экземпляр коллекции, который принимает коллекцию IEnumerable<T> строк для своего конструктора, например IList<T> или Queue<T>.

Этот метод использует UTF8 для значения кодирования.

Применяется к

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 для выполнения следующих действий:

Применяется к