File.ReadLines Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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:
Proveďte LINQ to Objects dotazy na soubor, abyste získali filtrovanou sadu jeho řádků.
Zapište vrácenou kolekci řádků do souboru pomocí metody File.WriteAllLines(String, IEnumerable<String>, Encoding) nebo je připojte k existujícímu souboru pomocí File.AppendAllLines(String, IEnumerable<String>, Encoding) metody.
Vytvořte okamžitě naplněnou instanci kolekce, která přebírá IEnumerable<T> kolekci řetězců pro jeho konstruktor, například IList<T> nebo Queue<T>.
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:
Proveďte LINQ to Objects dotazy na soubor, abyste získali filtrovanou sadu jeho řádků.
Zapište vrácenou kolekci řádků do souboru pomocí metody File.WriteAllLines(String, IEnumerable<String>) nebo je připojte k existujícímu souboru pomocí File.AppendAllLines(String, IEnumerable<String>) metody.
Vytvořte okamžitě naplněnou instanci kolekce, která přebírá IEnumerable<T> kolekci řetězců pro jeho konstruktor, například IList<T> nebo Queue<T>.
Tato metoda používá UTF8 pro hodnotu kódování.