次の方法で共有


File.ReadLines メソッド

定義

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

オーバーロード

ReadLines(String, Encoding)

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

ReadLines(String)

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

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

-又は-

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

注釈

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

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

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

適用対象

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 の文字列、空白のみを含む、または 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;

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

注釈

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

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

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

適用対象