VB.NETでファイルの行数を取得する

基本的な処理ですが、なぜか逆引き本などにも載っていないようなので、私が使っているものをアップしておきます。
テキストファイルの内容を改行で分割した配列に変換して、その配列の長さから行数を求めています。
テキストファイルの内容をすべて変数に取り込むため、巨大なテキストを扱うには向かないかもしれません。
とりあえず1万行程度のテキストでは速度面でも問題ないようです。

'ファイルの行数を取得(ファイルが存在しないかエラーの場合は-1を返す)
Public Function CountLine(ByVal fileNamePath As String) As Integer
  Dim textFile As IO.StreamReader
  Dim text As String
  If IO.File.Exists(fileNamePath) = False Then
    CountLine = -1
    Exit Function
  End If
  textFile = Nothing
  Try
    textFile = IO.File.OpenText(fileNamePath)
    text = textFile.ReadToEnd
    CountLine = text.Split(vbCrLf).Length
    '末尾の改行はカウントしない
    If text.EndsWith(vbCrLf) Then
      CountLine = CountLine - 1
    End If
  Catch ex As Exception
    CountLine = -1
  Finally
    If textFile IsNot Nothing Then
      textFile.Close()
    End If
  End Try
End Function


    サイト内検索

    プロフィール

  • 顔絵
  • kotani(こたに)

    30台後半になって突然脱サラ。フリーのスクリプト系プログラマーとして独立を目論む謎のおやぢ。東京都在住。趣味は古本屋巡り、文具いぢり、機械いぢり、B級グルメ探索等々多岐にわたる。PCを使う作業に関しては何でもかんでも自動化したがる自動化オタク。