hakeの日記

Windows環境でプログラミングの勉強をしています。

javascript Windows環境でローカルPCへのテキストファイルの作成保存

htmlでもhtaでも動作する。
ActiveXを使用するのでhtmlをIEで実行させた場合には、実行時に警告がでる。

また、OpenTextFile メソッドの引数の定義を定数(const)にしたところhtaで動作しなかったので変数としました。

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=shift_jis">
	<script type="text/javascript">

	var file;

	// http://msdn.microsoft.com/ja-jp/library/cc428044.aspx
	// OpenTextFile メソッド
	var forReading, forWriting, forAppending
	var tristateUseDefault, tristateTrue, tristateFalse
	//第2引数 ファイル入出力モード
	forReading   = 1;
	forWriting   = 2;
	forAppending = 8;
	//第3引数 ファイルが存在しない場合新規ファイルを作成するか否か(省略時は否:false)
	//第4引数 ファイル形式(省略時は、0)
	tristateUseDefault = -2;   //システムデフォルト(Shift_JIS)
	tristateTrue       = -1;   //Unicodeファイル
	tristateFalse      =  0;   //ASCII 

	function writeAll(filename, content) {
		var fso = new ActiveXObject('Scripting.FileSystemObject');
		var file = fso.OpenTextFile(filename, forWriting, true, tristateUseDefault);
		file.Write(content);
		file.Close();
		alert('書き込み終了');
	}

	function appendLine(filename, first, second) {
		var fso = new ActiveXObject('Scripting.FileSystemObject');
		var file = fso.OpenTextFile(filename, forAppending, true, tristateUseDefault);
		file.WriteLine(first);
		file.WriteLine(second);
		file.Close();
		alert('書き込み終了');
	}

	file = 'C:\\work\\javascript\\test.txt'
	writeAll(file, 'この文章をテキストファイルに書き込みます。\n');
	appendLine(file, '追加行1行目', '追加行2行目');

	</script>
</head>
</html>