Sdílet prostřednictvím


File.ReadLines Metoda

Definice

Přečte řádky souboru.

Přetížení

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

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

Verze rozhraní .NET Framework a .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 určený 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.

Metody ReadLines a ReadAllLines se liší následujícím způsobem: Při použití ReadLinesmůžete zahájit 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 může být ReadLines efektivnější.

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

Platí pro

ReadLines(String)

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

Verze rozhraní .NET Framework a .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 určený 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ý vytvoří výčet všech adresářů 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;

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

Poznámky

Metody ReadLines a ReadAllLines se liší následujícím způsobem: Při použití ReadLinesmůžete zahájit výčet kolekce řetězců před vrácením celé kolekce; pokud používáte ReadAllLines, musí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 může být ReadLines efektivnější.

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

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

Platí pro