File.ReadLines メソッド

定義

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

オーバーロード

ReadLines(String)

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

ReadLines(String, Encoding)

指定された方法でエンコーディングされたファイルの行を読み取ります。

ReadLines(String)

ソース:
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

読み取るファイル。

戻り値

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

例外

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

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;

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

注釈

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

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

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

適用対象

ReadLines(String, Encoding)

ソース:
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 はディレクトリです。

- または -

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

注釈

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

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

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

適用対象