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

解決


ぽんきち  2008-05-16 09:47:16  No: 144752

.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 19:31:07  No: 144753

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


ぽんきち  2008-05-16 21:58:41  No: 144754

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


やじゅ  2008-05-16 22:05:48  No: 144755

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

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


  2008-05-17 00:51:04  No: 144756

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


  2008-05-17 01:58:22  No: 144757

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

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


ぽんきち  2008-08-27 07:58:59  No: 144758

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加