File.ReadLines Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Läser raderna i en fil.
Överlagringar
| Name | Description |
|---|---|
| ReadLines(String) |
Läser raderna i en fil. |
| ReadLines(String, Encoding) |
Läs raderna i en fil som har en angiven kodning. |
ReadLines(String)
Läser raderna i en fil.
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)
Parametrar
- path
- String
Filen som ska läsas.
Returer
Alla rader i filen eller de rader som är resultatet av en fråga.
Undantag
.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ett eller flera ogiltiga tecken som definierats av metoden GetInvalidPathChars().
path är null.
path är ogiltigt (till exempel är det på en ommappad enhet).
Filen som angavs av path hittades inte.
Ett I/O-fel uppstod när filen öppnades.
path överskrider den systemdefinierade maximala längden.
Anroparen har inte den behörighet som krävs.
path anger en fil som är skrivskyddad.
-eller-
Den här åtgärden stöds inte på den aktuella plattformen.
-eller-
path är en katalog.
-eller-
Anroparen har inte den behörighet som krävs.
Exempel
I följande exempel läss raderna i en fil för att hitta rader som innehåller angivna strängar.
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
I följande exempel används metoden ReadLines i en LINQ-fråga som räknar upp alla kataloger för filer som har ett .txt-tillägg, läser varje rad i filen och visar raden om den innehåller strängen "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
Kommentarer
Metoderna ReadLines och ReadAllLines skiljer sig åt på följande sätt: När du använder ReadLineskan du börja räkna upp samlingen med strängar innan hela samlingen returneras. När du använder ReadAllLinesmåste du vänta tills hela matrisen med strängar returneras innan du kan komma åt matrisen. Därför kan det vara mer effektivt när du arbetar med mycket stora filer ReadLines .
Du kan använda ReadLines metoden för att göra följande:
- Utför LINQ-till-objekt-frågor på en fil för att hämta en filtrerad uppsättning av dess rader.
- Skriv den returnerade samlingen rader till en fil med File.WriteAllLines(String, IEnumerable<String>) metoden eller lägg till dem i en befintlig fil med File.AppendAllLines(String, IEnumerable<String>) metoden.
- Skapa en omedelbart ifylld instans av en samling som tar en IEnumerable<T> samling strängar för konstruktorn, till exempel en IList<T> eller en Queue<T>.
Den här metoden använder UTF8 för kodningsvärdet.
En rad definieras som en sekvens med tecken följt av en vagnretur ("\r", en radmatning ("\n") eller en vagnretur omedelbart följt av en radmatning, eller som den sista sekvensen med tecken i filen eller strömmen om den slutar utan en ny radsekvens. Om filen slutar med en ny radsekvens returneras ingen ytterligare tom rad. En fil som innehåller "line1\nline2\n" skapar till exempel samma två rader ("line1" och "line2") som en fil som innehåller "line1\nline2".
Gäller för
ReadLines(String, Encoding)
Läs raderna i en fil som har en angiven kodning.
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)
Parametrar
- path
- String
Filen som ska läsas.
- encoding
- Encoding
Den kodning som tillämpas på innehållet i filen.
Returer
Alla rader i filen eller de rader som är resultatet av en fråga.
Undantag
.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ett eller flera ogiltiga tecken enligt definitionen i metoden GetInvalidPathChars().
path är null.
path är ogiltigt (till exempel är det på en ommappad enhet).
Filen som angavs av path hittades inte.
Ett I/O-fel uppstod när filen öppnades.
path överskrider den systemdefinierade maximala längden.
Anroparen har inte den behörighet som krävs.
path anger en fil som är skrivskyddad.
-eller-
Den här åtgärden stöds inte på den aktuella plattformen.
-eller-
path är en katalog.
-eller-
Anroparen har inte den behörighet som krävs.
Kommentarer
Använd den här metoden för att ange en kodning som ska användas för att läsa filen.
Metoderna ReadLines och ReadAllLines skiljer sig åt på följande sätt: När du använder ReadLineskan du börja räkna upp samlingen med strängar innan hela samlingen returneras. När du använder ReadAllLinesmåste du vänta tills hela matrisen med strängar returneras innan du kan komma åt matrisen. Därför kan det vara mer effektivt när du arbetar med mycket stora filer ReadLines .
Du kan använda ReadLines metoden för att göra följande:
- Utför LINQ-till-objekt-frågor på en fil för att hämta en filtrerad uppsättning av dess rader.
- Skriv den returnerade samlingen rader till en fil med File.WriteAllLines(String, IEnumerable<String>, Encoding) metoden eller lägg till dem i en befintlig fil med File.AppendAllLines(String, IEnumerable<String>, Encoding) metoden.
- Skapa en omedelbart ifylld instans av en samling som tar en IEnumerable<T> samling strängar för konstruktorn, till exempel en IList<T> eller en Queue<T>.
En rad definieras som en sekvens med tecken som avslutas av en vagnretur ('\r'), en radmatning ('\n'), en vagnretur omedelbart följt av en radmatning eller slutet av filen eller strömmen. Om filen slutar med en ny radsekvens returneras ingen ytterligare tom rad. En fil som innehåller "line1\nline2\n" skapar till exempel samma två rader ("line1" och "line2") som en fil som innehåller "line1\nline2".