Прочитать на английском

Поделиться через


File.ReadLines Метод

Определение

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

Перегрузки

ReadLines(String, Encoding)

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

ReadLines(String)

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

ReadLines(String, Encoding)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

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

C#
public static System.Collections.Generic.IEnumerable<string> ReadLines (string path, System.Text.Encoding encoding);

Параметры

path
String

Файл для чтения.

encoding
Encoding

Кодировка, применяемая к содержимому файла.

Возвращаемое значение

Все строки файла или строки, которые являются результатом запроса.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars().

path недопустим (например, он находится на несопоставленном диске).

Файл, указанный path, не найден.

При открытии файла произошла ошибка ввода-вывода.

path превышает определенную системой максимальную длину.

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

path указывает файл, доступный только для чтения.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

path — это каталог.

-или-

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

Комментарии

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ReadLines(String)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

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

C#
public static System.Collections.Generic.IEnumerable<string> ReadLines (string path);

Параметры

path
String

Файл для чтения.

Возвращаемое значение

Все строки файла или строки, которые являются результатом запроса.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars().

path недопустим (например, он находится на несопоставленном диске).

Файл, указанный path, не найден.

При открытии файла произошла ошибка ввода-вывода.

path превышает определенную системой максимальную длину.

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

path указывает файл, доступный только для чтения.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

path — это каталог.

-или-

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

Примеры

В следующем примере считываются строки файла для поиска строк, содержащих указанные строки.

C#
foreach (string line in File.ReadLines(@"d:\data\episodes.txt"))
{
    if (line.Contains("episode") & line.Contains("2006"))
    {
        Console.WriteLine(line);
    }
}

В следующем примере используется метод ReadLines в запросе LINQ, который перечисляет все каталоги для файлов с расширением .txt, считывает каждую строку файла и отображает строку, если она содержит строку "Майкрософт".

C#
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);
        }
    }
}

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0