- ベストアンサー
VB6.0 テキストファイルの操作について
最近FileSystemObjectを覚えた者です。そこで質問なんですが、 FileSystemObjectを使用すると様々なテキストファイルの操作が可能ですが、Openステートメントでも同じようなことができると思うのですが、この二つの手法の長所と短所と、使用例など教えていただけたらと思います。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 ■ テキストの読み書き速度について。 従来の Open, Line Input 等のステートメントよりも、FileSystemObject の テキストストリームを使った方が高速です。私の環境で約 60% 程度。比較 ソースを書いてみて下さい。したがって、 ■ 扱うファイルサイズが大きい場合は、FileSystemObject が有利。 対して、小さなサイズのファイルを扱う場合は、どのような方法であっても 体感できる差は無いでしょう。しかし、極端な例で一行テキストを書き出す 場合。FileSystemObject は Set fso = CreateObject("Scripting.FileSystemObject") といった初期化に必要な時間、オーバーヘッドが発生しますから、それなら Print でサクっと書いてしまった方が速い....ということもあるわけです。 したがって、 ■ 扱うファイルサイズが小さい場合は、Open, Line Input 等が有利。 どのファイルサイズで大小を分けるかは、ケースバイケースなので具体的 には言えませんが、大まかにこのような線引きはできるかな。 以下、余談で参考まで。 FileSystemObject は機能的に非常によく考えられており、上述の読み書きの 速さ以外にも 1. 優れた可読性をもったソースが書ける 2. ファイル・フォルダの列挙、移動、コピー、削除等のオペレーション に便利なコマンドが多数用意されている といった重要なアドバンテージをもっています。 Open, Line Input 等は VB 初期のころからあるステートメントで多少時代遅れ の感は否めませんよね。ファイル I/O は、FileSystemObject に絞って覚えて 構わないと思います。 # Dir 関数は再帰処理できない、不便。でも、ファイル列挙は Dir の # 方が速かったりする。全てのケースで FileSystemObject が有利とは # 限らない。 # 結局、そのうち「両方マスターしとかないと...」ということになる # と思いますが。使い分けですね。 # テストソースをご自分で書いて、試行錯誤を重ねて下さいね (・∀・)b
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
使用例は自分で探せるでしょう。 Open ステートメント~ファイルの読み込み(or 書き込み)~ Close だと何だか書き方が直感的じゃないですね。 Open ステートメントの書き方も慣れないし、Line Input も同様。 FileSystemObject だと Dim fso As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Set ts = fso.OpenTextFile("D:\aaa.txt", ForReading, False) Dim lText As String lText = ts.ReadLine MsgBox lText ts.Close てな感じで、書き方の整合がとれてる感じがします。 ファイルの作成やら移動やらコピーやら、FileSystemObject のその他のオブジェクトやメソッドとの親和性も高いですし、これらを使い出すと VB の Open や Dir などファイル操作関連のチグハグさが目立ち、使いづらくて仕方ないです。 まぁ個人的な感想ですけど。
お礼
自分は逆にOpenやDirとか使ってたものなんで、 まだFileSystemObjectがしっくりこないんですが、様々なメソッドも 用意されてるみたいなので、がんばって覚えてみます。 ありがとうございました。
お礼
二つの手法について、長所と短所を分かりやすく説明していただいて 助かりました!! ファイルシステムオブジェクトは、覚えるとかなり便利そうですね。 がんばってマスターします。