テキストファイル操作

 ここではJScriptテキストファイル読み込み書き込み等に関することを紹介します。
テキストファイルから情報を読み込んだり、テキストファイルに文字列を書き込んだりする操作について、いくつかの方法を紹介します。

 テキストファイル読取専用開き閉じるには以下の関数を呼び出すことで実現できます。
他にもOpenAsTextStream()関数を使う方法がありますが、使い勝手がちょっと悪いので紹介はしません。
知りたい方は、頑張ってググッって調べてくれ。b
関数名
 object.OpenTextFile( filename, [iomode], [create], [format] )

関数説明
  指定したファイルを開き、開いたファイルの読み取り、または書き込みに
 使用できるTextStreamオブジェクトを返します。
 
引数
 object・・・・・・FileSystemObjectオブジェクト
 filename・・・・・作成または読み込むファイルへのパスへの絶対パスまたは
          相対パス(相対パスの場合は現在のカレントディレクトリが開始地点)
 iomode・・・・・・オープンモード(読取専用、書き込み専用、追加書き込みを指定)(省略可)
          省略した場合は、読取専用
 create・・・・・・ファイルが存在しなかった場合に新しいファイルを作成するかを
          示すブール値(trueは作成、falseは作成しない)(省略可)
          省略した場合は、false
 format・・・・・・開くファイルの形式(省略可)
          省略した場合は、ASCIIコード

[オープンモード]
内容
1 読み取り専用
2 書き込み専用
8 追加書き込み
[開くファイルの形式]
内容
-1 Unicode
0 ASCII
-2 システムデフォルト
戻り値  TextStreamオブジェクト
[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイルを読取専用で開き、閉じる。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを読み取り専用で開く
var file = fs.OpenTextFile( "C:/Info.txt", FORREADING, true, TRISTATE_FALSE );

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;

WScript.Echo( "終了" );


[実行結果]
 「C:」ドライブの直下の階層に「Info.txt」の名前のファイルが作成され(存在しない場合に限る)、プログラム内部で読み取り専用で開き、なにもせず閉じるだけの単純な処理。

 テキストファイルから全ての文字列を一度に読み込むには以下の関数を使用します。
テキストファイルの開閉の関数ファイルを開く(読取)&閉じるを参照ください。
関数名
 object.ReadAll();

関数説明
  テキストファイル内の全ての文字列データを読み込む。
 戻り値に、テキストファイル内に含まれている文字が文字列型のデータとして返されます。
 サイズが大きなファイルを開く際はメモリ量に気をつける必要がある。

引数
 object・・・・TextStreamオブジェクト

戻り値
 objectで指定したTextStreamオブジェクト(テキストファイル)に含まれている全ての文字列。


[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイル内の全ての文字データを一度に読み込む。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを読み取り専用で開く
var file = fs.OpenTextFile( "C:/Info.txt", FORREADING, true, TRISTATE_FALSE );

//  ファイルから全ての文字データを読み込む
var str = file.ReadAll();

WScript.Echo( str );

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;


[実行結果]
 実行前に、「C:」ドライブの直下の階層に「Info.txt」の名前のファイルを作成し、ファイル内に3行程度適当な文字列を入力してください。
その後、実行するとファイル内の文字データが一度にメッセージボックスで表示されます。

 テキストファイルから一行の文字列を読み込むには以下の関数プロパティを使用します。
テキストファイルの開閉の関数ファイルを開く(読取)&閉じるを参照ください。
関数名
 object.ReadLine();

関数説明
  テキストファイルの現在のシークの行の文字列データを読み込む。
 戻り値に、読み取った行データを文字列型のデータとして返されます。
 呼出し後、シークの位置は次の行の先頭に移動します。

引数
 object・・・・TextStreamオブジェクト

戻り値
 objectで指定したTextStreamオブジェクト(テキストファイル)の現在のシークの行の文字列。


プロパティ名
 object.AtEndOfStream;

プロパティ説明
  テキストファイルの現在のシークの位置がファイルの終端かどうかを示すbool値。

引数
 object・・・・TextStreamオブジェクト

戻り値
 objectで指定したTextStreamオブジェクトの現在のシークがファイルの終端ならtrue、
 それ以外なら、falseを返す。


[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイル内の全ての文字データを一度に読み込む。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを読み取り専用で開く
var file = fs.OpenTextFile( "C:/Info.txt", FORREADING, true, TRISTATE_FALSE );

//  ファイルの文字データを一行ずつ表示する
while( !file.AtEndOfStream )
{
    WScript.Echo( file.ReadLine() );
}

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;

WScript.Echo( "終了" );


[実行結果]
 実行前に、「C:」ドライブの直下の階層に「Info.txt」の名前のファイルを作成し、ファイル内に3行程度適当な文字列を入力してください。
その後、実行するとファイル内の文字データを一行ずつ全行メッセージボックスで順次表示されます。

 テキストファイルから一文字の文字列を読み込むには以下の関数を使用します。
テキストファイルの開閉の関数ファイルを開く(読取)&閉じるを参照ください。
関数名
 object.Read( num );

関数説明
  テキストファイルの現在のシークから指定した文字数分の文字列データを読み込む。
 戻り値に、読み取った文字データを文字列型のデータとして返されます。
 呼出し後、シークの位置はnum分移動します。

引数
 object・・・・TextStreamオブジェクト
 num ・・・・・読み込む文字数

戻り値
 objectで指定したTextStreamオブジェクト(テキストファイル)の現在のシークから指定した文字数分の文字列。


[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイル内の全ての文字データを一文字ずつ読み込む。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを読み取り専用で開く
var file = fs.OpenTextFile( "C:/Info.txt", FORREADING, true, TRISTATE_FALSE );

//  ファイルの文字データを一文字ずつ表示する
while( !file.AtEndOfStream )
{
    WScript.Echo( file.Read(1) );
}

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;

WScript.Echo( "終了" );


[実行結果]
 実行前に、「C:」ドライブの直下の階層に「Info.txt」の名前のファイルを作成し、ファイル内に3行程度適当な文字列を入力してください。
その後、実行するとファイル内の文字データを一文字ずつ全ての文字をメッセージボックスで順次表示されます。

 テキストファイル書込専用開き閉じるにはファイルを開く(読取)&閉じるで紹介している関数を参照してください。
引数に指定するで、書き込み専用で開くことが出来ます。
他にもCreateTextFile()関数を使う方法がありますが、使い勝手がちょっと悪いので紹介はしません。
知りたい方は、頑張ってググッって調べてくれ。b

[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイルを書込専用で開き、閉じる。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを書き込み専用で開く
var file = fs.OpenTextFile( "C:/Write.txt", FORWRITING, true, TRISTATE_FALSE );

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;

WScript.Echo( "終了" );


[実行結果]
 「C:」ドライブの直下の階層に「Write.txt」の名前のファイルを作成され(存在しない場合に限る)、プログラム内部で書き込み専用で開き、なにもせず閉じるだけの単純な処理。
そのファイルにすでに文字が設定されていても空ファイルになります。

 テキストファイル追加書き込み専用開き閉じるにはファイルを開く(読取)&閉じるで紹介している関数を参照してください。
引数に指定するで、追加書き込み専用で開くことが出来ます。

[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイルを追加書込専用で開き、閉じる。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを追加書き込み専用で開く
var file = fs.OpenTextFile( "C:/AddWrite.txt", FORAPPENDING, true, TRISTATE_FALSE );

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;

WScript.Echo( "終了" );


[実行結果]
 「C:」ドライブの直下の階層に「AddWrite.txt」の名前のファイルを作成され(存在しない場合に限る)、プログラム内部で書き込み専用で開き、なにもせず閉じるだけの単純な処理。
書き込み専用と違い、そのファイルにすでに文字が設定されていた場合でも空ファイルにはなりません。

 テキストファイルに文字列を書き込むには以下の関数を使用します。
テキストファイルの開閉の関数ファイルを開く(読取)&閉じるを参照ください。
関数名
 object.Write( str );

関数説明
  テキストファイルに文字列を書き込む。

引数
 object・・・・TextStreamオブジェクト
 str ・・・・・書き込む文字列データ

戻り値
 なし


関数名
 object.WriteLine( str );

関数説明
  テキストファイルに文字列と改行コードを書き込む。

引数
 object・・・・TextStreamオブジェクト
 str ・・・・・書き込む文字列データ

戻り値
 なし


関数名
 object.WriteBlankLines( num );

関数説明
  テキストファイルにnumで指定した数値分改行コードを書き込む。

引数
 object・・・・TextStreamオブジェクト
 num ・・・・・書き込む改行コードの数

戻り値
 なし



[サンプルコード]
//  
//  テキストファイル操作
//  
//   テキストファイルへ文字を書き込む。
//  

//  オープンモード
var FORREADING      = 1;    // 読み取り専用
var FORWRITING      = 2;    // 書き込み専用
var FORAPPENDING    = 8;    // 追加書き込み

//  開くファイルの形式
var TRISTATE_TRUE       = -1;   // Unicode
var TRISTATE_FALSE      =  0;   // ASCII
var TRISTATE_USEDEFAULT = -2;   // システムデフォルト

//  ファイル関連の操作を提供するオブジェクトを取得
var fs = new ActiveXObject( "Scripting.FileSystemObject" );

//  ファイルを書き込み専用で開く
var file = fs.OpenTextFile( "C:/Write.txt", FORWRITING, true, TRISTATE_FALSE );

//  文字列を書き込む(改行なし)
file.Write( "abcdefghijklmnopqrstuvwxyz" );
file.Write( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" );
file.Write( "0123456789" );

//  ブランク行を二行書き込む
file.WriteBlankLines( 2 );

//  文字列を書き込む(改行あり)
file.WriteLine();
file.WriteLine( "abcdefghijklmnopqrstuvwxyz" );
file.WriteLine( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" );
file.WriteLine( "0123456789" );

//  ファイルを閉じる
file.Close();

//  オブジェクトを解放
fs = null;

WScript.Echo( "終了" );


[実行結果]
 「C:」ドライブの直下の階層に「Write.txt」の名前のファイルを作成され(存在しない場合に限る)、プログラム内部で書き込み専用で開き、以下の文字列が設定されます。

-- Write.txt --
1行目:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
2行目:
3行目:
4行目:abcdefghijklmnopqrstuvwxyz
5行目:ABCDEFGHIJKLMNOPQRSTUVWXYZ
6行目:0123456789

 JScriptで使用可能な特殊文字の表を以下に示します。
主に使用するのは「\r\n」の組み合わせの改行文字と、「\t」のタブ文字くらいだと思います。
というより、「\b」と「\f」はさっぱり意味不明です。
ググって。b

特殊文字 内容
\b バックスペース
\f フォームフィード
\n ラインフィード (改行)
\r キャリッジリターン
\t 水平タブ
\' シングルクォーテーション(')
\" ダブルクォーテーション(")
\\ 円記号(\)


情報の入力方法へ 目次 ファイル&フォルダ操作へ

1