File.ReadLines Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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:
Execute consultas LINQ to Objects em um arquivo para obter um conjunto filtrado de suas linhas.
Escreva a coleção de linhas retornada em um arquivo com o método File.WriteAllLines(String, IEnumerable<String>, Encoding) ou acrescente-as a um arquivo existente com o método File.AppendAllLines(String, IEnumerable<String>, Encoding).
Crie uma instância populada imediatamente de uma coleção que usa uma coleção IEnumerable<T> de cadeias de caracteres para seu construtor, como um IList<T> ou um Queue<T>.
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:
Execute consultas LINQ to Objects em um arquivo para obter um conjunto filtrado de suas linhas.
Escreva a coleção de linhas retornada em um arquivo com o método File.WriteAllLines(String, IEnumerable<String>) ou acrescente-as a um arquivo existente com o método File.AppendAllLines(String, IEnumerable<String>).
Crie uma instância populada imediatamente de uma coleção que usa uma coleção IEnumerable<T> de cadeias de caracteres para seu construtor, como um IList<T> ou um Queue<T>.
Esse método usa UTF8 para o valor de codificação.