File.ReadLines Metoda

Definice

Přečte řádky souboru.

Přetížení

Name Description
ReadLines(String, Encoding)

Přečtěte si řádky souboru, který má zadané kódování.

ReadLines(String)

Přečte řádky souboru.

ReadLines(String, Encoding)

Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs

Přečtěte si řádky souboru, který má zadané kódování.

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

Soubor, který se má přečíst.

encoding
Encoding

Kódování použité pro obsah souboru.

Návraty

Všechny řádky souboru nebo řádky, které jsou výsledkem dotazu.

Výjimky

.NET Framework a verze .NET Core starší než 2.1: path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků definovaných metodou GetInvalidPathChars().

path je null.

path je neplatný (například je na nemapované jednotce).

Soubor zadaný službou path nebyl nalezen.

Při otevírání souboru došlo k vstupně-výstupní chybě.

path překračuje maximální délku definovanou systémem.

Volající nemá požadované oprávnění.

path určuje soubor, který je jen pro čtení.

-nebo-

Tato operace není na aktuální platformě podporovaná.

-nebo-

path je adresář.

-nebo-

Volající nemá požadované oprávnění.

Poznámky

Tuto metodu použijte k určení kódování pro použití čtení souboru.

Tyto ReadLines metody se ReadAllLines liší následujícím způsobem: Při použití ReadLinesmůžete začít výčet kolekce řetězců před vrácením celé kolekce. Při použití ReadAllLinesmusíte počkat na vrácení celého pole řetězců, než budete mít přístup k poli. Proto při práci s velmi velkými soubory ReadLines může být efektivnější.

Metodu ReadLines můžete použít k provedení následujících kroků:

Čára je definována jako posloupnost znaků ukončených návratem na začátek řádku ("\r"), odřádkováním ("\n"), návratem řádku bezprostředně následovaným kanálem řádku nebo koncem souboru nebo datového proudu. Pokud soubor končí sekvencí nového řádku, nebude vrácen žádný další prázdný řádek. Například soubor obsahující "line1\nline2\n" vytvoří stejné dva řádky ("line1" a "line2") jako soubor obsahující "line1\nline2".

Platí pro

ReadLines(String)

Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs

Přečte řádky souboru.

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

Soubor, který se má přečíst.

Návraty

Všechny řádky souboru nebo řádky, které jsou výsledkem dotazu.

Výjimky

.NET Framework a verze .NET Core starší než 2.1: path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků definovaných metodou GetInvalidPathChars().

path je null.

path je neplatný (například je na nemapované jednotce).

Soubor zadaný službou path nebyl nalezen.

Při otevírání souboru došlo k vstupně-výstupní chybě.

path překračuje maximální délku definovanou systémem.

Volající nemá požadované oprávnění.

path určuje soubor, který je jen pro čtení.

-nebo-

Tato operace není na aktuální platformě podporovaná.

-nebo-

path je adresář.

-nebo-

Volající nemá požadované oprávnění.

Příklady

Následující příklad přečte řádky souboru k vyhledání řádků, které obsahují zadané řetězce.

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

Následující příklad používá metodu ReadLines v dotazu LINQ, která vyčísluje všechny adresáře pro soubory, které mají příponu .txt, přečte každý řádek souboru a zobrazí řádek, pokud obsahuje řetězec "Microsoft".

using System;
using System.IO;
using System.Linq;

partial class Example2
{
    static void SearchOptionExample()
    {
        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()} 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

Partial Class Example2
    Shared Sub SearchOptionExample()

        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.curFile}\t{f.curLine}")
            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 Class

Poznámky

Tyto ReadLines metody se ReadAllLines liší takto: Při použití ReadLinesmůžete začít vytvářet výčet řetězců před vrácením celé kolekce. Při použití ReadAllLinesmusíte počkat na vrácení celé pole řetězců, abyste mohli získat přístup k poli. Proto při práci s velmi velkými soubory ReadLines může být efektivnější.

Metodu ReadLines můžete použít k provedení následujících kroků:

Tato metoda se používá UTF8 pro hodnotu kódování.

Řádek je definován jako posloupnost znaků následovaných návratem na začátek řádku ("\r'), informačním kanálem řádku ('\n') nebo návratem na začátek řádku bezprostředně za kanálem řádku nebo jako poslední posloupnost znaků v souboru nebo datovém proudu, pokud končí bez sekvence nového řádku. Pokud soubor končí sekvencí nového řádku, nebude vrácen žádný další prázdný řádek. Například soubor obsahující "line1\nline2\n" vytvoří stejné dva řádky ("line1" a "line2") jako soubor obsahující "line1\nline2".

Platí pro