File.ReadLines メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ファイルの行を読み取ります。
オーバーロード
| 名前 | 説明 |
|---|---|
| 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 つ以上含まれています。
path は nullです。
path が無効です (たとえば、マップされていないドライブ上にあります)。
pathで指定されたファイルが見つかりませんでした。
ファイルを開くときに I/O エラーが発生しました。
path がシステム定義の最大長を超えています。
呼び出し元に必要なアクセス許可がありません。
path は、読み取り専用のファイルを指定します。
-又は-
この操作は、現在のプラットフォームではサポートされていません。
-又は-
path はディレクトリです。
-又は-
呼び出し元に必要なアクセス許可がありません。
注釈
このメソッドを使用して、ファイルの読み取りを使用するエンコードを指定します。
ReadLinesメソッドとReadAllLines メソッドは次のように異なります。ReadLinesを使用すると、コレクション全体が返される前に、文字列のコレクションの列挙を開始できます。 ReadAllLinesを使用する場合は、配列にアクセスする前に、文字列の配列全体が返されるのを待つ必要があります。 そのため、非常に大きなファイルを操作する場合は、 ReadLines の方が効率的です。
ReadLinesメソッドを使用して、次の操作を行うことができます。
- ファイルに対して LINQ to Objects クエリを実行して、フィルター処理された行のセットを取得します。
- File.WriteAllLines(String, IEnumerable<String>, Encoding) メソッドを使用して返された行のコレクションをファイルに書き込むか、File.AppendAllLines(String, IEnumerable<String>, Encoding) メソッドを使用して既存のファイルに追加します。
- IList<T>やQueue<T>など、コンストラクターの文字列のIEnumerable<T>コレクションを受け取る、すぐに設定されたコレクションのインスタンスを作成します。
行は、復帰 ('\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 つ以上含まれています。
path は nullです。
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メソッドを使用して、次の操作を行うことができます。
- ファイルに対して LINQ to Objects クエリを実行して、フィルター処理された行のセットを取得します。
- File.WriteAllLines(String, IEnumerable<String>) メソッドを使用して返された行のコレクションをファイルに書き込むか、File.AppendAllLines(String, IEnumerable<String>) メソッドを使用して既存のファイルに追加します。
- IList<T>やQueue<T>など、コンストラクターの文字列のIEnumerable<T>コレクションを受け取る、すぐに設定されたコレクションのインスタンスを作成します。
このメソッドでは、エンコード値に UTF8 を使用します。
行は、文字のシーケンスの後に復帰 ('\r')、改行 ('\n')、または改行が続く復帰、または改行シーケンスなしで終わる場合はファイルまたはストリーム内の文字の最後のシーケンスとして定義されます。 ファイルが改行シーケンスで終わる場合、追加の空行は返されません。 たとえば、"line1\nline2\n"を含むファイルでは、"line1\nline2"を含むファイルと同じ 2 行 ("line1"と"line2") が生成されます。