Lesson15 テキストファイルを読み書きする
FileSystemObjectのオブジェクト2
-TextStreamオブジェクト-
このLessonでは、TextStreamオブジェクトを使って、テキストファイルを読み書きする話について述べる予定でしたが、諸事情により簡単にやらせていただきます。詳細については、VBSリファレンスを参照してください。
基本は、まずFileSystemObjectオブジェクトのOpenTextFile,CreateTextFileメソッド、あるいはFileオブジェクトのOpenAsTextStreamメソッドを使ってテキストファイルを開き、TextStreamオブジェクトを取得します。
ForReading(読取専用)で開いたTextStreamオブジェクトに対しては、Read,ReadLine,ReadAllメソッドを使うとテキストファイルの中身を文字列として取得できます。読み込む範囲を指定するときはSkip,SkipLineメソッドを使います。
ForWriting(書き込み専用),ForAppending(ファイルの末尾に追加)で開いたTextStreamオブジェクトに対しては、Write,WriteLine,WriteBlankLinesメソッドを使って文字列を書き込むことができます。
TextStreamのどの位置に読み込みもしくは書き込みを行っているかを知るには、AtEndOfLine,AtEndOfStream,Column,Lineプロパティを使います。
最後に、開いたTextStreamを閉じるには、Closeメソッドを使います。
以下は、TextStreamオブジェクトの使い方を示した参考例です。ファイル名と検索文字列を指定すると、そのファイルを検索し、文字列が見つかった行番号とその行内容をresult.txtに書き出します。
Const ForReading = 1,ForWriting = 2,ForAppending = 8 '定数の指定 Set Fs = WScript.CreateObject("Scripting.FileSystemObject") sFile = InputBox("検索するファイル名を指定してください。") sWord = InputBox("検索する文字列を指定してください。") Set oTs1 = Fs.OpenTextFile(sFile,ForReading) 'ファイルを読み取りモードで開く Set oTs2 = Fs.CreateTextFile("result.txt",True) 'ファイルを作成する oTs2.WriteLine "ファイル= " & sFile 'ファイル名を書き込む oTs2.WriteLine "検索文字= " & sWord '検索文字を書き込む oTs2.WriteBlankLines 1 'ブランク行を1行書き込む Do Until oTs1.AtEndOfStream 'oTs1を末端まで読み込むまでループを繰り返す sLine = oTs1.ReadLine '1行読み込む If InStr(sLine,sWord)<>0 Then 'その行にもし検索文字があったら oTs2.Write oTs1.Line - 1 & ": " & sLine & vbCrLf 'oTs2に見つかった行番号とその行の内容を書き込む End If Loop oTs1.Close 'oTs1を閉じる oTs2.Close 'oTs2を閉じる MsgBox "検索結果をresult.txtに出力しました。"
このLessonでは、TextStreamオブジェクトを使って、テキストファイルを読み書きする方法を示しました。次回は、Dictionaryオブジェクトの使い方を説明します。