|

|
|
 |
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;
}
|
|
|
|
|
|