File.ReadLines Metod

Definition

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:

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:

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".

Gäller för