File.ReadLines メソッド

定義

ファイルの行を読み取ります。

オーバーロード

名前 説明
ReadLines(String, Encoding)

指定したエンコードを持つファイルの行を読み取ります。

ReadLines(String)

ファイルの行を読み取ります。

ReadLines(String, Encoding)

ソース:
File.cs
ソース:
File.cs
ソース:
File.cs
ソース:
File.cs
ソース:
File.cs

指定したエンコードを持つファイルの行を読み取ります。

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)

パラメーター

path
String

読み取るファイル。

encoding
Encoding

ファイルの内容に適用されるエンコード。

返品

ファイルのすべての行、またはクエリの結果である行。

例外

.NET Framework および .NET Core バージョン 2.1 より前: path は長さ 0 の文字列、空白のみを含む、または GetInvalidPathChars() メソッドで定義されている無効な文字が 1 つ以上含まれています。

pathnullです。

path が無効です (たとえば、マップされていないドライブ上にあります)。

pathで指定されたファイルが見つかりませんでした。

ファイルを開くときに I/O エラーが発生しました。

path がシステム定義の最大長を超えています。

呼び出し元に必要なアクセス許可がありません。

path は、読み取り専用のファイルを指定します。

-又は-

この操作は、現在のプラットフォームではサポートされていません。

-又は-

path はディレクトリです。

-又は-

呼び出し元に必要なアクセス許可がありません。

注釈

このメソッドを使用して、ファイルの読み取りを使用するエンコードを指定します。

ReadLinesメソッドとReadAllLines メソッドは次のように異なります。ReadLinesを使用すると、コレクション全体が返される前に、文字列のコレクションの列挙を開始できます。 ReadAllLinesを使用する場合は、配列にアクセスする前に、文字列の配列全体が返されるのを待つ必要があります。 そのため、非常に大きなファイルを操作する場合は、 ReadLines の方が効率的です。

ReadLinesメソッドを使用して、次の操作を行うことができます。

行は、復帰 ('\r')、改行 ('\n')、復帰の直後に改行、またはファイルまたはストリームの末尾で終わる文字のシーケンスとして定義されます。 ファイルが改行シーケンスで終わる場合、追加の空行は返されません。 たとえば、"line1\nline2\n"を含むファイルでは、"line1\nline2"を含むファイルと同じ 2 行 ("line1""line2") が生成されます。

適用対象

ReadLines(String)

ソース:
File.cs
ソース:
File.cs
ソース:
File.cs
ソース:
File.cs
ソース:
File.cs

ファイルの行を読み取ります。

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)

パラメーター

path
String

読み取るファイル。

返品

ファイルのすべての行、またはクエリの結果である行。

例外

.NET Framework および .NET Core バージョン 2.1 より前: path は長さ 0 の文字列、空白のみを含む、または GetInvalidPathChars() メソッドによって定義された無効な文字が 1 つ以上含まれています。

pathnullです。

path が無効です (たとえば、マップされていないドライブ上にあります)。

pathで指定されたファイルが見つかりませんでした。

ファイルを開くときに I/O エラーが発生しました。

path がシステム定義の最大長を超えています。

呼び出し元に必要なアクセス許可がありません。

path は、読み取り専用のファイルを指定します。

-又は-

この操作は、現在のプラットフォームではサポートされていません。

-又は-

path はディレクトリです。

-又は-

呼び出し元に必要なアクセス許可がありません。

次の例では、ファイルの行を読み取って、指定した文字列を含む行を検索します。

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

次の例では、LINQ クエリで ReadLines メソッドを使用します。このメソッドは、.txt 拡張子を持つファイルのすべてのディレクトリを列挙し、ファイルの各行を読み取り、文字列 "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

注釈

ReadLinesメソッドとReadAllLinesメソッドは次のように異なります。ReadLinesを使用すると、コレクション全体が返される前に文字列のコレクションの列挙を開始できます。ReadAllLinesを使用する場合は、配列にアクセスする前に文字列の配列全体が返されるのを待つ必要があります。 そのため、非常に大きなファイルを操作する場合は、 ReadLines の方が効率的です。

ReadLinesメソッドを使用して、次の操作を行うことができます。

このメソッドでは、エンコード値に UTF8 を使用します。

行は、文字のシーケンスの後に復帰 ('\r')、改行 ('\n')、または改行が続く復帰、または改行シーケンスなしで終わる場合はファイルまたはストリーム内の文字の最後のシーケンスとして定義されます。 ファイルが改行シーケンスで終わる場合、追加の空行は返されません。 たとえば、"line1\nline2\n"を含むファイルでは、"line1\nline2"を含むファイルと同じ 2 行 ("line1""line2") が生成されます。

適用対象