2.6 テキストファイルの一括読み込み
 テキストファイルを読み込むときの方法其の2です。テキストファイルを全部いっぺんに読む方法です。場合によっては、こっちの方が便利!テキストファイルをいっぺんに読み込む場合は、テキストファイルオブジェクトのReadAllメソッド(一括読み込み)を使います。

 なお、このメソッドを使うとアンチウィルスが悪さをしたと勘違いし「ウィルスかもしれません!」なんて警告メッセージが出るかも知れません。
使用例
 テキストファイルの一括読み込みの例です。ほとんどの部分は2.5 テキストファイルの行単位の読み込みと同じなので、そちらの説明をどうぞ。そんなわけで、完全に違う部分だけに絞って説明します。

 例は、プログラムがあるフォルダ内に(プログラムが保存されているフォルダ内に)あるファイルの内容を取得し、その内容をコンソール(プロンプト画面)に表示するという処理をしています。読み込みたいファイルは、プログラム起動時にパラメタで与えます。

 ただし、この例ではファイルの内容を1行ずつ取り出すのではなく、全ての内容をいっぺんに取り出しています。Kがその部分です。テキストファイルオブジェクトのReadAllメソッドを使って、全ての内容をいっぺんに取り出しています。そのため、この例ではループを行っていません。

 ■VBScriptの記述例
Option Explicit

'定数の宣言
Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)

Dim objParm

'@パラメタ情報の保存
Set objParm = Wscript.Arguments

'A取得したパラメタが2コ未満のときはエラー
If objParm.Count < 1 Then
   WScript.echo "パラメタが足りません(汗)"

'B取得したパラメタが2コより多いときもエラー
ElseIf objParm.Count > 1 Then
   WScript.echo "パラメタが多いです(汗)"

Else
'C取得したパラメタが1コのときはOKなので
'テキストファイルの読み込み処理へ飛ばす
   Call prcTextFileRead
End If

'オブジェクト破棄
Set objParm = Nothing

'これ以降はCallなどで呼び出さない限り実行しない。

'=============================================================
'以降はテキストファイル読み込みのプロシジャ
'上のCから呼び出される
'=============================================================
Sub prcTextFileRead()

   'Dファイルの有無を調べるために定義
   On Error Resume Next

   Dim objFileSys
   Dim objInFile
   Dim intSep
   Dim strScriptPath
   Dim strFileName
   Dim strFilePath
   Dim strData

   'Eパラメタを保存(ファイル名として使用)
   strFileName = objParm(0)

   'Fプログラムが保存されているフォルダを取得します
   strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")

   'Gファイルシステムオブジェクトの作成
   Set objFileSys = CreateObject("Scripting.FileSystemObject")

   'H読み込むファイルのフルパスを編集
   strFilePath = objFileSys.BuildPath(strScriptPath,strFileName)

   'Iファイルのオープン
   Set objInFile = objFileSys.OpenTextFile(strFilePath,ForReading)

   'Jファイルのオープンが成功(ファイル有り)のときはErr.Numberが0
   If Err.Number=0 Then

      'Kファイルの全ての内容をガバっと取り出し
      strData = objInFile.ReadAll

      'L読み込んだ内容をコンソールへ表示
      WScript.echo strData

      'Mファイルのクローズ
      objInFile.Close

   'Nファイルのオープンが失敗(ファイル無し)のときはErr.Numberが0以外
   Else
      Wscript.Echo strScriptPath & "にファイル" & strFileName & "がありませんでした。"
   end if

   'Oオブジェクトの破棄
   Set objFileSys = Nothing
   Set objInFile = Nothing

End Sub

 ■JScript(JavaScript)の記述例
//定数の宣言
var ForReading = 1; //読み込み
var ForWriting = 2; //書きこみ(上書きモード)
var ForAppending = 8; //書きこみ(追記モード)

//@パラメタ情報の保存
var objParm = WScript.arguments;

//A取得したパラメタが1コ未満のときはエラー
if (objParm.length < 1) {
   WScript.echo("パラメタが足りません(汗)");

//B取得したパラメタが12コより多いときもエラー
} else if (objParm.length > 1) {
   WScript.echo("パラメタが多いです(汗)");

} else {
//C取得したパラメタが1コのときはOK
//テキストファイルの読み込み処理へ飛ばす
   prcTextFileRead();
}

//オブジェクト破棄
objParm = null;

//これ以降はCallなどで呼び出さない限り実行しない。

//=============================================================
//以降はテキストファイル読み込みのプロシジャ
//上のCから呼び出される
//=============================================================
function prcTextFileRead() {

   var objFileSys;
   var objInFile;
   var strScriptPath;
   var strFileName;
   var strFilePath;
   var strData;

   //Eパラメタを保存(ファイル名として使用)
   strFileName = objParm(0);

   //Fプログラムが保存されているフォルダを取得します
   strScriptPath = String(WScript.ScriptFullName).replace(WScript.ScriptName,"");

   //Gファイルシステムオブジェクトの作成
   objFileSys = new ActiveXObject("Scripting.FileSystemObject");

   //H読み込むファイルのフルパスを編集
   strFilePath = objFileSys.BuildPath(strScriptPath,strFileName);

   try {

      //Iファイルのオープン(読み込みで開く)
      objInFile = objFileSys.OpenTextFile(strFilePath,ForReading);

      //Jファイルのオープンが成功(ファイル有り)のときに実行
      //Kファイルの全ての内容をガバっと取り出し
      strData = objInFile.ReadAll();

      //L読み込んだ内容をコンソールへ表示
      WScript.echo(strData);

      //Mファイルのクローズ
      objInFile.Close();

   //Nファイルのオープンが失敗(ファイル無し)のとき
   } catch(e) {
      WScript.echo(strScriptPath + "にファイル" + strFileName + "がありませんでした。");
   }

   //Oオブジェクトの破棄
   objFileSys = null;
   objInFile = null;

}
Copyright(C) 1999-2006 結城圭介。 All rights reserved