FileI/OとかCharsetとかその辺の話をテキトーに

JSmartyではコンパイラクラスで毎回毎回動的にテンプレート関数を作っているのでJemplateのようにあらかじめコンパイルしたものを読込む方式にもできたほうがいいのではないかと思う。IISAJAJAでサーバーサイドでコンパイルしたテンプレートをクライアントサイドで読込むのも素敵だと思うしコマンドラインでローカルでコンパイルできるようにしておくのもありだと思う。

加えてSmartyの世界ってまだまだEUC頑張っているので単純にSmartyのテンプレートを読み込もうとした場合Charsetの対応が必要になってくる(--;かなりめんど。

ADODB.Streamを使う(読む|書く)

サーバーサイド(IIS)で動かすときに便利。というかIISならEUC使わなくねぇ?あと書込みもすきなCharsetで出来るので問題無。でも、HTAにしたときある条件下でファイル書込みのときに警告でるから好きでない。

stream = new ActiveXObject('ADODB.Stream');
stream.charset = '_autodetect'; // 自動判別
stream.type = 2;
stream.open();
stream.loadFromFile('hoge.txt');
stream.position = 0;
text = stream.readText(); // こちらで変数textに代入
stream.close();

FileSystemObjectを使う(読む|書く)

読み書きOK!ただしANSIUNICODEの対応。HTAにしたときでも警告でないから好み。

fso = new ActiveXObject('Scripting.FileSystemObject');
txt = fso.createTextFile('hoge.txt');
txt.write('Hello');
txt.close();

XMLHttpRequestを使う(読む)

あぁ文字コードが…以下rya

AJAJAでは…

System.readFileあたり使えばOK?文字のCharset判別とかはどうなんでしょうか…(実験すればいいだけという話)。そしてファイルの書込みは?(汗)オープンソースだから勝手にSystem.writeFileとか作ればOK!OK!。昔C言語やってたからその辺の記憶を手探りに頑張る!