vb2005以降でのテキストファイルの行数取得

解決


ぽんきち  2008-05-16 00:47:16  No: 144752  IP: 192.*.*.*

.NETで以下の処理を行おうと思ったら(テキストファイルの行数を取得する)
Dim Fso     As New FileSystemObject
Dim FsoTS   As TextStream
Set FsoTS = Fso.OpenTextFile("test.txt", ForAppending)
Label1.Caption = "ファイルの行数は " & FsoTS.Line & " 行です。"

この手法に変わる方法はあるのでしょうか

特にmyをつかった方法があれば教えていただきたいと思います。
よろしくお願いします。

編集 削除
 2008-05-16 10:31:07  No: 144753  IP: 192.*.*.*

実際にStreamReader.ReadLineかReadToEndで読んで、
行数を調べるのが早いと思う
FileSystemObject自体は使おうと思えば.NETでも使えるみたいだけど、
TextStreamは使えなさそうなので…

編集 削除
ぽんきち  2008-05-16 12:58:41  No: 144754  IP: 192.*.*.*

やはり、実際に読み込むしかないですか。。残念。もっと簡単に行数がとっればと思っていたのですが。相手が100万行以上などの巨大なものだと時間がかかりそうな気がします。ありがとうございます。

編集 削除
やじゅ  2008-05-16 13:05:48  No: 144755  IP: 192.*.*.*

FileSystemObjectは.NETでも使えるけど、これには罠があって
読み取り専用にされていると、追加書込みエラーになっちゃいます。
ちなみに私はやらかしました、CDドライブからだと例外エラーは
出るって不具合報告・・・

StreamReader.ReadLineとかで、地道にデータ読んで行数カウント
するしかないかな。

編集 削除
 2008-05-16 15:51:04  No: 144756  IP: 192.*.*.*

FSOでSkipLineで数える。
ところでLineプロパティは最後の改行有無で誤差1行出る。

編集 削除
 2008-05-16 16:58:22  No: 144757  IP: 192.*.*.*

SkipLineはTextStreamのメソッドらしいから、TextStreamが使えなかったら
無理みたいだよ

ReadLineで数えるか、ReadToEndで全部取ってからCrLf数えるのとでは、
どっちが速いだろう…
全部取るとファイルがデカければメモリをバカ食いするだろうし、
最後のCrLfの後に文字があるかどうかで確かに1行の差が出るから
気をつけないとダメだろうけど…

編集 削除
ぽんきち  2008-08-26 22:58:59  No: 144758  IP: 192.*.*.*

ありがとうございました。やはり実際に数えることにします。

編集 削除