File.ReadLines Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Leest de regels van een bestand.
Overloads
| Name | Description |
|---|---|
| ReadLines(String) |
Leest de regels van een bestand. |
| ReadLines(String, Encoding) |
Lees de regels van een bestand met een opgegeven codering. |
ReadLines(String)
Leest de regels van een bestand.
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)
Parameters
- path
- String
Het bestand dat moet worden gelezen.
Retouren
Alle regels van het bestand of de regels die het resultaat van een query zijn.
Uitzonderingen
.NET Framework en .NET Core-versies ouder dan 2.1: path is een tekenreeks met lengte nul, bevat alleen witruimte of bevat een of meer ongeldige tekens die zijn gedefinieerd door de methode GetInvalidPathChars().
path is null.
path is ongeldig (bijvoorbeeld op een niet-toegewezen station).
Het bestand dat is opgegeven door path is niet gevonden.
Er is een I/O-fout opgetreden tijdens het openen van het bestand.
path overschrijdt de door het systeem gedefinieerde maximumlengte.
De beller heeft niet de vereiste machtiging.
path geeft een bestand op dat alleen-lezen is.
– of –
Deze bewerking wordt niet ondersteund op het huidige platform.
– of –
path is een map.
– of –
De beller heeft niet de vereiste machtiging.
Voorbeelden
In het volgende voorbeeld worden de regels van een bestand gelezen om regels te vinden die opgegeven tekenreeksen bevatten.
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
In het volgende voorbeeld wordt de methode ReadLines gebruikt in een LINQ-query waarmee alle mappen worden opgesomd voor bestanden met een .txt-extensie, elke regel van het bestand wordt gelezen en de regel wordt weergegeven als deze de tekenreeks 'Microsoft' bevat.
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
Opmerkingen
De ReadLines en ReadAllLines methoden verschillen als volgt: Wanneer u gebruikt ReadLines, kunt u beginnen met het inventariseren van de verzameling tekenreeksen voordat de hele verzameling wordt geretourneerd. Wanneer u deze gebruikt ReadAllLines, moet u wachten tot de hele matrix met tekenreeksen wordt geretourneerd voordat u toegang hebt tot de matrix. Daarom kan het efficiënter zijn wanneer u met zeer grote bestanden ReadLines werkt.
U kunt de ReadLines methode gebruiken om het volgende te doen:
- Voer LINQ-query's uit op objecten in een bestand om een gefilterde set regels te verkrijgen.
- Schrijf de geretourneerde verzameling regels naar een bestand met de File.WriteAllLines(String, IEnumerable<String>) methode of voeg ze toe aan een bestaand bestand met de File.AppendAllLines(String, IEnumerable<String>) methode.
- Maak een onmiddellijk ingevuld exemplaar van een verzameling die een IEnumerable<T> verzameling tekenreeksen voor de constructor gebruikt, zoals een IList<T> of een Queue<T>.
Deze methode gebruikt UTF8 voor de coderingswaarde.
Een regel wordt gedefinieerd als een reeks tekens gevolgd door een regelterugloop ('\r'), een regelinvoer ('\n'), of een regelterugloop direct gevolgd door een regelinvoer, of als de laatste reeks tekens in het bestand of de stroom als deze eindigt zonder een nieuwe regelreeks. Als het bestand eindigt met een nieuwe regelreeks, wordt er geen extra lege regel geretourneerd. Een bestand dat bijvoorbeeld dezelfde twee regels ( en ) bevat "line1\nline2\n" als een bestand met "line1\nline2"."line2""line1"
Van toepassing op
ReadLines(String, Encoding)
Lees de regels van een bestand met een opgegeven codering.
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)
Parameters
- path
- String
Het bestand dat moet worden gelezen.
- encoding
- Encoding
De codering die wordt toegepast op de inhoud van het bestand.
Retouren
Alle regels van het bestand of de regels die het resultaat van een query zijn.
Uitzonderingen
.NET Framework en .NET Core-versies ouder dan 2.1: path is een tekenreeks met lengte nul, bevat alleen witruimte of bevat een of meer ongeldige tekens zoals gedefinieerd door de methode GetInvalidPathChars().
path is null.
path is ongeldig (bijvoorbeeld op een niet-toegewezen station).
Het bestand dat is opgegeven door path is niet gevonden.
Er is een I/O-fout opgetreden tijdens het openen van het bestand.
path overschrijdt de door het systeem gedefinieerde maximumlengte.
De beller heeft niet de vereiste machtiging.
path geeft een bestand op dat alleen-lezen is.
– of –
Deze bewerking wordt niet ondersteund op het huidige platform.
– of –
path is een map.
– of –
De beller heeft niet de vereiste machtiging.
Opmerkingen
Gebruik deze methode om een codering op te geven om het bestand te lezen.
De ReadLines en ReadAllLines methoden verschillen als volgt: Wanneer u gebruikt ReadLines, kunt u beginnen met het inventariseren van de verzameling tekenreeksen voordat de hele verzameling wordt geretourneerd. Wanneer u deze functie gebruikt ReadAllLines, moet u wachten totdat de hele matrix met tekenreeksen wordt geretourneerd voordat u toegang hebt tot de matrix. Daarom kan het efficiënter zijn wanneer u met zeer grote bestanden ReadLines werkt.
U kunt de ReadLines methode gebruiken om het volgende te doen:
- Voer LINQ-query's uit op objecten in een bestand om een gefilterde set regels te verkrijgen.
- Schrijf de geretourneerde verzameling regels naar een bestand met de File.WriteAllLines(String, IEnumerable<String>, Encoding) methode of voeg ze toe aan een bestaand bestand met de File.AppendAllLines(String, IEnumerable<String>, Encoding) methode.
- Maak een onmiddellijk ingevuld exemplaar van een verzameling die een IEnumerable<T> verzameling tekenreeksen voor de constructor gebruikt, zoals een IList<T> of een Queue<T>.
Een regel wordt gedefinieerd als een reeks tekens die worden beëindigd door een regelterugloop ('\r'), een regelinvoer ('\n'), een regelterugloop direct gevolgd door een regelinvoer, of het einde van het bestand of de stroom. Als het bestand eindigt met een nieuwe regelreeks, wordt er geen extra lege regel geretourneerd. Een bestand dat bijvoorbeeld dezelfde twee regels ( en ) bevat "line1\nline2\n" als een bestand met "line1\nline2"."line2""line1"