2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【C#】テキストファイルの行数カウントにReadAllLines(path).Lengthを使わない

Posted at

File.ReadAllLinesとは

テキストファイルのすべての行を読み取り、string[]に格納する関数。
File.ReadAllLines(path).Lengthは、配列のLengthを取得する動きになる。

なぜ非推奨なのか

小さなファイルなら問題は起こらないが、巨大なファイルを読み込む際、メモリを大量に必要とする。
そのため、スペックの低い環境ではOutOfMemoryExcepitonが起こる。

中途半端にスペックの高い環境では、大量のメモリを消費しつつ、長時間に渡って読み込み処理を続けるため、PCに多大な負荷がかかる。
時間効率も悪いし、他のことが一切できない状態になってしまう。

テキストファイルの行数をカウントするには

素直にStreamReaderReadLine()する。

C#
string filePath = "任意のファイルパス";
int rowCount = 0;

using (StreamReader sr = new StreamReader(filePath))
{
    while(!sr.EndOfStream)
    {
        sr.ReadLine();
        rowCount++;
    }
}

Console.WriteLine($"ファイルの行数: {rowCount}");
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?