File.ReadAllLinesとは
テキストファイルのすべての行を読み取り、string[]
に格納する関数。
File.ReadAllLines(path).Length
は、配列のLengthを取得する動きになる。
なぜ非推奨なのか
小さなファイルなら問題は起こらないが、巨大なファイルを読み込む際、メモリを大量に必要とする。
そのため、スペックの低い環境ではOutOfMemoryExcepiton
が起こる。
中途半端にスペックの高い環境では、大量のメモリを消費しつつ、長時間に渡って読み込み処理を続けるため、PCに多大な負荷がかかる。
時間効率も悪いし、他のことが一切できない状態になってしまう。
テキストファイルの行数をカウントするには
素直にStreamReader
でReadLine()
する。
C#
string filePath = "任意のファイルパス";
int rowCount = 0;
using (StreamReader sr = new StreamReader(filePath))
{
while(!sr.EndOfStream)
{
sr.ReadLine();
rowCount++;
}
}
Console.WriteLine($"ファイルの行数: {rowCount}");