プロが教えるわが家の防犯対策術!

最近FileSystemObjectを覚えた者です。そこで質問なんですが、
FileSystemObjectを使用すると様々なテキストファイルの操作が可能ですが、Openステートメントでも同じようなことができると思うのですが、この二つの手法の長所と短所と、使用例など教えていただけたらと思います。よろしくお願いします。

A 回答 (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
    • good
    • 1
この回答へのお礼

二つの手法について、長所と短所を分かりやすく説明していただいて
助かりました!!
ファイルシステムオブジェクトは、覚えるとかなり便利そうですね。
がんばってマスターします。

お礼日時:2009/03/01 22:51

使用例は自分で探せるでしょう。



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 などファイル操作関連のチグハグさが目立ち、使いづらくて仕方ないです。

まぁ個人的な感想ですけど。
    • good
    • 0
この回答へのお礼

自分は逆にOpenやDirとか使ってたものなんで、
まだFileSystemObjectがしっくりこないんですが、様々なメソッドも
用意されてるみたいなので、がんばって覚えてみます。
ありがとうございました。

お礼日時:2009/03/01 22:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!