DOBON.NET DOBON.NETプログラミング掲示板過去ログ

CSVファイルの総行数を取得したいです。

環境/言語:[WindowsXP VB.NET NET Framework1.1]
分類:[.NET]

お世話になります。

CSVファイルの総行数を取得したいのですが、
.NETではどうしたらよいのでしょうか?

6.0の場合テキストストリームでラインを取得すればいけたのですが、
ぜひご教授下さい。
よろしくお願い致します。
■No9785に返信(こつさんの記事)
> CSVファイルの総行数を取得したいのですが、
> .NETではどうしたらよいのでしょうか?
> 6.0の場合テキストストリームでラインを取得すればいけたのですが、

同じようにテキストファイルとして読み込んで、ライン数を
カウントすればよいのでは?
もしくは、CSVファイルにODBCCommand使ってアクセスしてSQLでカウントするとか?

読み込んだデータは当然他でいろいろ使うでしょうし、
場合によってはADO.NETが便利ですよね。

(・・・メモリ食うとは思いますが。)

でも、普段使わない人には敷居高いですよね、ADO.NETとかSQLは。
けっこう勉強必要ですね。
ご教授有難う御座いました。

結局、ReadAllで全て読み込み、vbCrLfでスプリットして
配列の要素数をカウント=行数にしました。

おかしいでしょうか?
おかしかったら、注意して下さい。
よろしくお願い致します。

ご教授有難う御座いました。
解決済み!
> 結局、ReadAllで全て読み込み、vbCrLfでスプリットして
> 配列の要素数をカウント=行数にしました。

ファイルサイズが大きいとメモリを食いまくりますね。。
スプリットとはString.Splitメソッドを使用していますか?
VBのSplit関数はパフォーマンスが悪いようですのでご参考まで。
こんにちは、じゃんぬねっと です。

■No9817に返信(こつさんの記事)
> 結局、ReadAllで全て読み込み、vbCrLfでスプリットして
> 配列の要素数をカウント=行数にしました。
> おかしいでしょうか?
> おかしかったら、注意して下さい。

うーん、それだったら、こちちの方が良いような気がします。

    Public Shared Function GetLinesOfTextFile(ByVal nFilePath As String) As Int64
        Dim hReader As New System.IO.StreamReader(nFilePath)
        Dim lCount  As Int64

        While (hReader.Peek() >= 0)
            hReader.ReadLine()
            lCount += 1
        End While

        Return lCount
    End Function
解決済み!
ご教授有難う御座いました。

カウントを取得するだけでなく、行単位で処理をしたいので
こちらの方法をとりました。
説明不足ですみませんでした。

スプリットは
ストリング変数.Split(vbCrLf)
を使用しました。

有難う御座いました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板