File.ReadLines()とFile.ReadAllLines()に関するクエリがあります。それらの違いは何ですか。行ごとにデータを含むテキストファイルがあります。File.ReadAllLines()
配列を返し、File.ReadLines().ToArray();
を使用しても同じ結果が得られます。これらのメソッドに関連するパフォーマンスの違いはありますか。
string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();
または
string[] lines = File.ReadAllLines("C:\\mytxt.txt");
これらの方法に関連するパフォーマンスの違いはありますか?
[〜#〜] 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
}
_
File.ReadLines
メソッドはIEnumerable<string>
を返します。ただし、File.ReadAllLines
はstring[]
を返します。Bigファイルを読み取る場合は、File.ReadLines
メソッドを使用することをお勧めします。すべてのファイルをstring[]
に読み込むのではなく、ファイルから1行ずつ読み込むため、多くのメモリを消費します。 [〜#〜] msdn [〜#〜]
テキストファイルを開き、ファイルのすべての行を読み取り、ファイルを閉じます。
小さなファイルがある場合、または一度に完全なファイルを処理する必要がある場合は、ファイルを完全に読み取るためにこれを使用します。つまり、ファイル全体がメモリ内にあることを意味します。
File.ReadLinesメソッドを使用すると、コレクション全体が返される前に、文字列のコレクションの列挙を開始できます。
一度にファイル全体ではなく、チャンクでファイルを処理する必要がある場合に便利です。
[〜#〜] msdn [〜#〜] に記載されている注釈
ReadLinesメソッドとReadAllLinesメソッドは次のように異なります。
ReadLinesを使用すると、コレクション全体が返される前に文字列のコレクションの列挙を開始できます。 ReadAllLinesを使用する場合、文字列の配列全体が返されるのを待ってから、配列にアクセスできます。したがって、非常に大きなファイルで作業している場合、ReadLinesの方が効率的です。