web-dev-qa-db-ja.com

File.ReadLines()とFile.ReadAllLines()の違いは何ですか?

File.ReadLines()とFile.ReadAllLines()に関するクエリがあります。それらの違いは何ですか。行ごとにデータを含むテキストファイルがあります。File.ReadAllLines()配列を返し、File.ReadLines().ToArray();を使用しても同じ結果が得られます。これらのメソッドに関連するパフォーマンスの違いはありますか。

string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();

または

string[] lines = File.ReadAllLines("C:\\mytxt.txt");
42
sharad

これらの方法に関連するパフォーマンスの違いはありますか?

[〜#〜] yes [〜#〜]違いがあります

File.ReadAllLines()メソッドは一度にファイル全体を読み取り、string []配列を返します。そのため、大きなサイズのファイルを処理するのに時間がかかり、配列全体が返されるまでユーザーが待機する必要があるためお勧めしません。

File.ReadLines()は_IEnumerable<string>_を返し、一度にファイル全体を読み取らないため、大きなサイズのファイルを操作する場合には本当に優れたオプションです。

[〜#〜] msdn [〜#〜] から:

ReadLinesメソッドとReadAllLinesメソッドは次のように異なります。

ReadLinesを使用すると、コレクション全体が返される前に、文字列のコレクションの列挙を開始できます。 ReadAllLinesを使用する場合、文字列の配列全体が返されるのを待ってから、配列にアクセスできます。したがって、非常に大きなファイルで作業している場合、ReadLinesの方が効率的です。

例1:File.ReadAllLines()

_string[] lines = File.ReadAllLines("C:\\mytxt.txt");
_

例2:File.ReadLines()

_foreach (var line in File.ReadLines("C:\\mytxt.txt"))
{

   //Do something     

}
_
63

File.ReadLinesメソッドはIEnumerable<string>を返します。ただし、File.ReadAllLinesstring[]を返します。Bigファイルを読み取る場合は、File.ReadLinesメソッドを使用することをお勧めします。すべてのファイルをstring[]に読み込むのではなく、ファイルから1行ずつ読み込むため、多くのメモリを消費します。 [〜#〜] msdn [〜#〜]

3
Jacob

ReadAllLines

テキストファイルを開き、ファイルのすべての行を読み取り、ファイルを閉じます。

小さなファイルがある場合、または一度に完全なファイルを処理する必要がある場合は、ファイルを完全に読み取るためにこれを使用します。つまり、ファイル全体がメモリ内にあることを意味します。

ReadLines

File.ReadLinesメソッドを使用すると、コレクション全体が返される前に、文字列のコレクションの列挙を開始できます。

一度にファイル全体ではなく、チャンクでファイルを処理する必要がある場合に便利です。

[〜#〜] msdn [〜#〜] に記載されている注釈

ReadLinesメソッドとReadAllLinesメソッドは次のように異なります。

ReadLinesを使用すると、コレクション全体が返される前に文字列のコレクションの列挙を開始できます。 ReadAllLinesを使用する場合、文字列の配列全体が返されるのを待ってから、配列にアクセスできます。したがって、非常に大きなファイルで作業している場合、ReadLinesの方が効率的です。

ここに詳細と比較デモがあります

2
Zaheer Ahmed