最近の記事
- 9/1 - 将棋始めました
- 5/16 - サーバー引っ越し
- 4/24 - 優先順位
- 3/17 - vbNullString と 空文字列 ""
- 3/15 - InputBox 関数の戻り値
- 3/13 - 紙と Excel と VBA
- 3/9 - 未だに Visual Basic 6
- 11/14 - ぼて閉鎖
- 11/9 - 関数オブジェクトの呼び出し
- 9/7 - メソッドとしての関数オブジェクト
Entering Passive Mode
JavaScript は、ブラウザ上で動作する言語だ。
そのため、セキュリティ上の問題もあり、
ファイルアクセスの API は用意されていない。
そのため、ファイルアクセスを行うためには、
外部の COM オブジェクトの力を借りる必要がある。
WSH から利用できるオブジェクトは 2 つ。
・Scripting.FileSystemObject から取得する TextStream
・ADODB.Stream
FileSystemObject は、WSH でも使われており、
昨日使った WScript.StdErr も TextStream である。
TextStream は、名前の通り、テキストファイルへの
アクセスを行うことができるオブジェクトであり、
Shift_JIS と、UTF16 の文字コードに対応している。
ADODB.Stream の方は、柔軟で多機能なオブジェクトだ。
Internet Explorer の脆弱性につけこみ、
ADODB.Stream を使ったコードが、
セキュリティの問題となったことで有名になった。
元は ADO というデータベースアクセス系の API の
一部としての役割でしかなかったのだが、
プログラマにとって魅力的な機能を備えており、
次第に独立して使われるようになってきた。
このオブジェクトは非常に強力であり、
テキストだけでなく、バイナリ入出力、
そして自動、手動での文字コードの変換も可能だ。
今後のことを考えて、ADODB.Stream を使うことにしよう。
では、ADODB.Stream を使って、UTF-8 で保存してみよう。
var stream = new ActiveXObject("ADODB.Stream");
stream.Open();
stream.Type = 2; // adTypeText
stream.Charset = "UTF-8";
stream.LineSeparator = -1; // adCRLF
stream.WriteText("日本語文字列", 1); // adWriteLine
stream.WriteText("二行目");
stream.WriteText("これも二行目");
stream.SaveToFile("C:\TEST.TXT");
stream.Close();
以上のように書くことで、UTF-8 を指定して、
テキストファイルを作成することができる。
基本は Open メソッドで準備し、
Type プロパティでテキスト入出力を指定し、
Charset プロパティで符号化方法を決める。
LineSeparator プロパティでは、改行文字を指定する。
後は WriteText メソッドで書き込んでいく。
第 2 引数に adWriteLine を指定すると、
指定した文字の後に、改行が追加で出力される。
SaveToFile メソッドを呼び出すと、
Stream に書き込まれた全ての内容をファイルに書き出す。
これを実行すると、C ドライブに TEST.TXT が作成される。
文字コードは UTF-8 で書き込まれているはずだ。
コメント (0 件)