Aracılığıyla paylaş


File.ReadLines Yöntem

Tanım

Dosyanın satırlarını okur.

Aşırı Yüklemeler

ReadLines(String, Encoding)

Belirtilen kodlamaya sahip bir dosyanın satırlarını okuyun.

ReadLines(String)

Dosyanın satırlarını okur.

ReadLines(String, Encoding)

Kaynak:
File.cs
Kaynak:
File.cs
Kaynak:
File.cs

Belirtilen kodlamaya sahip bir dosyanın satırlarını okuyun.

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)

Parametreler

path
String

Okunacak dosya.

encoding
Encoding

Dosyanın içeriğine uygulanan kodlama.

Döndürülenler

Dosyanın tüm satırları veya sorgunun sonucu olan satırlar.

Özel durumlar

2.1'den eski .NET Framework ve .NET Core sürümleri: path sıfır uzunlukta bir dizedir, yalnızca boşluk içerir veya GetInvalidPathChars() yöntemi tarafından tanımlanan bir veya daha fazla geçersiz karakter içerir.

path geçersiz (örneğin, eşlenmemiş bir sürücüde).

path tarafından belirtilen dosya bulunamadı.

Dosya açılırken bir G/Ç hatası oluştu.

path, sistem tarafından tanımlanan uzunluk üst sınırını aşıyor.

Çağıranın gerekli izni yok.

path salt okunur bir dosya belirtir.

-veya-

Bu işlem geçerli platformda desteklenmiyor.

-veya-

path bir dizindir.

-veya-

Çağıranın gerekli izni yok.

Açıklamalar

Dosyayı okumak için kullanılacak bir kodlama belirtmek için bu yöntemi kullanın.

ReadLines ve ReadAllLines yöntemleri aşağıdaki gibi farklılık gösterir: ReadLineskullandığınızda, koleksiyonun tamamı döndürülmeden önce dize koleksiyonunu numaralandırmaya başlayabilirsiniz. ReadAllLineskullandığınızda, diziye erişebilmeniz için önce dize dizisinin tamamının döndürülmesini beklemeniz gerekir. Bu nedenle, çok büyük dosyalarla çalışırken ReadLines daha verimli olabilir.

Aşağıdakileri yapmak için ReadLines yöntemini kullanabilirsiniz:

Şunlara uygulanır

ReadLines(String)

Kaynak:
File.cs
Kaynak:
File.cs
Kaynak:
File.cs

Dosyanın satırlarını okur.

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)

Parametreler

path
String

Okunacak dosya.

Döndürülenler

Dosyanın tüm satırları veya sorgunun sonucu olan satırlar.

Özel durumlar

2.1'den eski .NET Framework ve .NET Core sürümleri: path sıfır uzunlukta bir dizedir, yalnızca boşluk içerir veya GetInvalidPathChars() yöntemi tarafından tanımlanan bir veya daha fazla geçersiz karakter içerir.

path geçersiz (örneğin, eşlenmemiş bir sürücüde).

path tarafından belirtilen dosya bulunamadı.

Dosya açılırken bir G/Ç hatası oluştu.

path, sistem tarafından tanımlanan uzunluk üst sınırını aşıyor.

Çağıranın gerekli izni yok.

path salt okunur bir dosya belirtir.

-veya-

Bu işlem geçerli platformda desteklenmiyor.

-veya-

path bir dizindir.

-veya-

Çağıranın gerekli izni yok.

Örnekler

Aşağıdaki örnek, belirtilen dizeleri içeren satırları bulmak için dosyanın satırlarını okur.

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

Aşağıdaki örnek, .txt uzantısına sahip dosyaların tüm dizinlerini numaralandıran, dosyanın her satırını okuyan ve "Microsoft" dizesini içeriyorsa satırı görüntüleyen bir LINQ sorgusunda ReadLines yöntemini kullanır.

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

Açıklamalar

ReadLines ve ReadAllLines yöntemleri aşağıdaki gibi farklılık gösterir: ReadLineskullandığınızda, koleksiyonun tamamı döndürülmeden önce dize koleksiyonunu numaralandırmaya başlayabilirsiniz; ReadAllLineskullandığınızda, diziye erişebilmeniz için önce dize dizisinin tamamının döndürülmesini beklemeniz gerekir. Bu nedenle, çok büyük dosyalarla çalışırken ReadLines daha verimli olabilir.

Aşağıdakileri yapmak için ReadLines yöntemini kullanabilirsiniz:

Bu yöntem kodlama değeri için UTF8 kullanır.

Şunlara uygulanır