Udostępnij za pośrednictwem


File.ReadLines Metoda

Definicja

Odczytuje wiersze pliku.

Przeciążenia

ReadLines(String, Encoding)

Odczytaj wiersze pliku, który ma określone kodowanie.

ReadLines(String)

Odczytuje wiersze pliku.

ReadLines(String, Encoding)

Źródło:
File.cs
Źródło:
File.cs
Źródło:
File.cs

Odczytaj wiersze pliku, który ma określone kodowanie.

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)

Parametry

path
String

Plik do odczytania.

encoding
Encoding

Kodowanie stosowane do zawartości pliku.

Zwraca

Wszystkie wiersze pliku lub wiersze, które są wynikiem zapytania.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko biały znak lub zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych przez metodę GetInvalidPathChars().

path jest null.

path jest nieprawidłowa (na przykład jest na niezamapowanym dysku).

Nie można odnaleźć pliku określonego przez path.

Wystąpił błąd we/wy podczas otwierania pliku.

path przekracza maksymalną długość zdefiniowaną przez system.

Obiekt wywołujący nie ma wymaganych uprawnień.

path określa plik, który jest tylko do odczytu.

-lub-

Ta operacja nie jest obsługiwana na bieżącej platformie.

-lub-

path jest katalogiem.

-lub-

Obiekt wywołujący nie ma wymaganych uprawnień.

Uwagi

Użyj tej metody, aby określić kodowanie do odczytu pliku.

Metody ReadLines i ReadAllLines różnią się w następujący sposób: w przypadku używania ReadLinesmożna rozpocząć wyliczanie kolekcji ciągów przed zwróceniem całej kolekcji. W przypadku używania ReadAllLinesnależy poczekać na zwrócenie całej tablicy ciągów, zanim będzie można uzyskać dostęp do tablicy. W związku z tym podczas pracy z bardzo dużymi plikami ReadLines mogą być wydajniejsze.

Aby wykonać następujące czynności, możesz użyć metody ReadLines:

Dotyczy

ReadLines(String)

Źródło:
File.cs
Źródło:
File.cs
Źródło:
File.cs

Odczytuje wiersze pliku.

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)

Parametry

path
String

Plik do odczytania.

Zwraca

Wszystkie wiersze pliku lub wiersze, które są wynikiem zapytania.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko biały znak lub zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych przez metodę GetInvalidPathChars().

path jest null.

path jest nieprawidłowa (na przykład jest na niezamapowanym dysku).

Nie można odnaleźć pliku określonego przez path.

Wystąpił błąd we/wy podczas otwierania pliku.

path przekracza maksymalną długość zdefiniowaną przez system.

Obiekt wywołujący nie ma wymaganych uprawnień.

path określa plik, który jest tylko do odczytu.

-lub-

Ta operacja nie jest obsługiwana na bieżącej platformie.

-lub-

path jest katalogiem.

-lub-

Obiekt wywołujący nie ma wymaganych uprawnień.

Przykłady

Poniższy przykład odczytuje wiersze pliku, aby znaleźć wiersze zawierające określone ciągi.

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

W poniższym przykładzie użyto metody ReadLines w zapytaniu LINQ, które wylicza wszystkie katalogi dla plików z rozszerzeniem .txt, odczytuje każdy wiersz pliku i wyświetla wiersz, jeśli zawiera ciąg "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

Uwagi

Metody ReadLines i ReadAllLines różnią się w następujący sposób: w przypadku używania ReadLinesmożna rozpocząć wyliczanie kolekcji ciągów przed zwróceniem całej kolekcji; w przypadku używania ReadAllLinesnależy poczekać na zwrócenie całej tablicy ciągów, zanim będzie można uzyskać dostęp do tablicy. W związku z tym podczas pracy z bardzo dużymi plikami ReadLines mogą być wydajniejsze.

Aby wykonać następujące czynności, możesz użyć metody ReadLines:

Ta metoda używa UTF8 dla wartości kodowania.

Dotyczy