Compartilhar via


File.ReadLines Método

Definição

Lê as linhas de um arquivo.

Sobrecargas

ReadLines(String, Encoding)

Leia as linhas de um arquivo que tem uma codificação especificada.

ReadLines(String)

Lê as linhas de um arquivo.

ReadLines(String, Encoding)

Origem:
File.cs
Origem:
File.cs
Origem:
File.cs

Leia as linhas de um arquivo que tem uma codificação especificada.

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)

Parâmetros

path
String

O arquivo a ser lido.

encoding
Encoding

A codificação que é aplicada ao conteúdo do arquivo.

Retornos

Todas as linhas do arquivo ou as linhas que são o resultado de uma consulta.

Exceções

Versões do .NET Framework e do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos, conforme definido pelo método GetInvalidPathChars().

path é null.

path é inválido (por exemplo, está em uma unidade não mapeada).

O arquivo especificado por path não foi encontrado.

Ocorreu um erro de E/S ao abrir o arquivo.

path excede o comprimento máximo definido pelo sistema.

O chamador não tem a permissão necessária.

path especifica um arquivo somente leitura.

-ou-

Não há suporte para essa operação na plataforma atual.

-ou-

path é um diretório.

-ou-

O chamador não tem a permissão necessária.

Comentários

Use esse método para especificar uma codificação para usar a leitura do arquivo.

Os métodos ReadLines e ReadAllLines diferem da seguinte maneira: quando você usa ReadLines, você pode começar a enumerar a coleção de cadeias de caracteres antes que toda a coleção seja retornada. Ao usar ReadAllLines, você deve aguardar que toda a matriz de cadeias de caracteres seja retornada antes de acessar a matriz. Portanto, quando você está trabalhando com arquivos muito grandes, ReadLines pode ser mais eficiente.

Você pode usar o método ReadLines para fazer o seguinte:

Aplica-se a

ReadLines(String)

Origem:
File.cs
Origem:
File.cs
Origem:
File.cs

Lê as linhas de um arquivo.

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)

Parâmetros

path
String

O arquivo a ser lido.

Retornos

Todas as linhas do arquivo ou as linhas que são o resultado de uma consulta.

Exceções

Versões do .NET Framework e do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos definidos pelo método GetInvalidPathChars().

path é null.

path é inválido (por exemplo, está em uma unidade não mapeada).

O arquivo especificado por path não foi encontrado.

Ocorreu um erro de E/S ao abrir o arquivo.

path excede o comprimento máximo definido pelo sistema.

O chamador não tem a permissão necessária.

path especifica um arquivo somente leitura.

-ou-

Não há suporte para essa operação na plataforma atual.

-ou-

path é um diretório.

-ou-

O chamador não tem a permissão necessária.

Exemplos

O exemplo a seguir lê as linhas de um arquivo para localizar linhas que contêm cadeias de caracteres especificadas.

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

O exemplo a seguir usa o método ReadLines em uma consulta LINQ que enumera todos os diretórios para arquivos que têm uma extensão .txt, lê cada linha do arquivo e exibe a linha se ela contiver a cadeia de caracteres "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

Comentários

Os métodos ReadLines e ReadAllLines diferem da seguinte maneira: quando você usa ReadLines, você pode começar a enumerar a coleção de cadeias de caracteres antes que toda a coleção seja retornada; ao usar ReadAllLines, você deve aguardar que toda a matriz de cadeias de caracteres seja retornada antes de acessar a matriz. Portanto, quando você está trabalhando com arquivos muito grandes, ReadLines pode ser mais eficiente.

Você pode usar o método ReadLines para fazer o seguinte:

Esse método usa UTF8 para o valor de codificação.

Aplica-se a