File.ReadLines Metodo

Definizione

Legge le righe di un file.

Overload

ReadLines(String, Encoding)

Leggere le righe di un file con una codifica specificata.

ReadLines(String)

Legge le righe di un file.

ReadLines(String, Encoding)

Origine:
File.cs
Origine:
File.cs
Origine:
File.cs

Leggere le righe di un file con una codifica specificata.

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)

Parametri

path
String

File da leggere.

encoding
Encoding

Codifica applicata al contenuto del file.

Restituisce

Tutte le righe del file o le righe risultanti da una query.

Eccezioni

.NET Framework e versioni di .NET Core precedenti alla 2.1: path è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi come definito dal metodo GetInvalidPathChars().

path è null.

path non è valido (ad esempio, si trova in un'unità non mappata).

Impossibile trovare il file specificato da path.

Si è verificato un errore di I/O durante l'apertura del file.

path supera la lunghezza massima definita dal sistema.

Il chiamante non dispone dell'autorizzazione richiesta.

path specifica un file di sola lettura.

-o-

Questa operazione non è supportata nella piattaforma corrente.

-o-

path è una directory.

-o-

Il chiamante non dispone dell'autorizzazione richiesta.

Commenti

Utilizzare questo metodo per specificare una codifica da usare per leggere il file.

I metodi ReadLines e ReadAllLines differiscono nel modo seguente: quando si utilizza ReadLines, è possibile iniziare a enumerare la raccolta di stringhe prima che venga restituita l'intera raccolta. Quando si usa ReadAllLines, è necessario attendere che venga restituita l'intera matrice di stringhe prima di poter accedere alla matrice. Pertanto, quando si lavora con file di grandi dimensioni, ReadLines può essere più efficiente.

È possibile usare il metodo ReadLines per eseguire le operazioni seguenti:

Si applica a

ReadLines(String)

Origine:
File.cs
Origine:
File.cs
Origine:
File.cs

Legge le righe di un file.

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)

Parametri

path
String

File da leggere.

Restituisce

Tutte le righe del file o le righe risultanti da una query.

Eccezioni

.NET Framework e versioni di .NET Core precedenti alla 2.1: path è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi definiti dal metodo GetInvalidPathChars().

path è null.

path non è valido (ad esempio, si trova in un'unità non mappata).

Impossibile trovare il file specificato da path.

Si è verificato un errore di I/O durante l'apertura del file.

path supera la lunghezza massima definita dal sistema.

Il chiamante non dispone dell'autorizzazione richiesta.

path specifica un file di sola lettura.

-o-

Questa operazione non è supportata nella piattaforma corrente.

-o-

path è una directory.

-o-

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

L'esempio seguente legge le righe di un file per trovare righe contenenti stringhe specificate.

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

Nell'esempio seguente viene utilizzato il metodo ReadLines in una query LINQ che enumera tutte le directory per i file con estensione .txt, legge ogni riga del file e visualizza la riga se contiene la stringa "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

Commenti

I metodi ReadLines e ReadAllLines differiscono nel modo seguente: quando si utilizza ReadLines, è possibile iniziare a enumerare la raccolta di stringhe prima che venga restituita l'intera raccolta; quando si usa ReadAllLines, è necessario attendere che venga restituita l'intera matrice di stringhe prima di poter accedere alla matrice. Pertanto, quando si lavora con file di grandi dimensioni, ReadLines può essere più efficiente.

È possibile usare il metodo ReadLines per eseguire le operazioni seguenti:

Questo metodo usa UTF8 per il valore di codifica.

Si applica a