File.ReadLines Метод

Определение

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

Перегрузки

Имя Описание
ReadLines(String, Encoding)

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

ReadLines(String)

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

ReadLines(String, Encoding)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
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 — это каталог.

-или-

Вызывающий объект не имеет требуемого разрешения.

Комментарии

Используйте этот метод, чтобы указать кодировку, используемую для чтения файла.

ReadAllLines Методы ReadLines отличаются следующим образом: при использовании ReadLinesможно начать перечисление коллекции строк перед возвратом всей коллекции. При использовании ReadAllLinesнеобходимо дождаться возврата всего массива строк, прежде чем получить доступ к массиву. Поэтому при работе с очень большими файлами ReadLines может быть более эффективным.

Этот метод можно использовать ReadLines для выполнения следующих действий.

Строка определяется как последовательность символов, завершаемых возвратом каретки ("\r"), каналом строки ("\n"), возвратом каретки сразу после канала строки или конца файла или потока. Если файл заканчивается новой последовательностью, возвращается дополнительная пустая строка. Например, файл, содержащий "line1\nline2\n" одну и ту же строку ("line1" и "line2") в виде файла, содержащего "line1\nline2".

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

ReadLines(String)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
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;

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

Комментарии

Методы ReadLines отличаются следующим образом: при использовании ReadLinesможно начать перечисление коллекции строк перед возвратом всей коллекции. При использовании ReadAllLinesнеобходимо дождаться возврата всего массива строк, прежде чем получить доступ к массиву.ReadAllLines Поэтому при работе с очень большими файлами ReadLines может быть более эффективным.

Этот метод можно использовать ReadLines для выполнения следующих действий.

  • Выполните запросы LINQ to Objects в файле, чтобы получить отфильтрованный набор строк.
  • Напишите возвращаемую коллекцию строк в файл с File.WriteAllLines(String, IEnumerable<String>) помощью метода или добавьте их в существующий файл с File.AppendAllLines(String, IEnumerable<String>) помощью метода.
  • Создайте немедленно заполненный экземпляр коллекции, которая принимает IEnumerable<T> коллекцию строк для конструктора, например a IList<T> или a Queue<T>.

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

Строка определяется как последовательность символов, за которой следует возврат каретки ("\r"), веб-канал строки ("\n"), или возврат каретки сразу после канала строки или в качестве конечной последовательности символов в файле или потоке, если он заканчивается без новой последовательности. Если файл заканчивается новой последовательностью, возвращается дополнительная пустая строка. Например, файл, содержащий "line1\nline2\n" одну и ту же строку ("line1" и "line2") в виде файла, содержащего "line1\nline2".

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