JavaScriptからファイルシステムへのアクセスとか
JavaScriptからローカルのファイルを読んだり書いたりしたい。
ぜんぜんまとまってないし理解もしてないけど調べたものをメモ。
ローカルでJSと言えばTiddlyWikiが思い浮かぶのでソースチェック。
ieLoad/SaveFileとかmozillaLoad/SaveFileとかのところ。ieXXXの方はWSHを使用。mozillaXXXの方はよくわからないのでもっと調べる。
// Returns null if it can't do it, false if there's an error, true if it saved OK function mozillaSaveFile(filePath, content) { if(window.Components) try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(filePath); if (!file.exists()) file.create(0, 0664); var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); out.init(file, 0x20 | 0x02, 00004,null); out.write(content, content.length); out.flush(); out.close(); return(true); } catch(e) { //alert("Exception while attempting to save\n\n" + e); return(false); } return(null); }
まずこれ。
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
MozillaのJavaScriptにはPackagesというオブジェクトがあってnetscapeというのはそれのプロパティらしい。グローバルのnetscapeはそれのシノニム。
ほかにもjavaとsunがある。Javaのパッケージなのかね。よくわからん。
Packages - Archive of obsolete content | MDN
Bypassing Security Restrictions and Signing Code - Archive of obsolete content | MDN
関係ないけどjava.awtでウィンドウ作れたりしてびびった。そして開いたウィンドウを閉じれなくて困った。
つぎこれ。
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
MozillaにはXPCOMというWindowsのCOMみたいなオブジェクトモデルがあって、それをJavaScriptから使うらしく、XPCONNECTとか呼ばれてるらしい。
http://www.mozilla-japan.org/projects/xpcom/
http://www.mozilla-japan.org/catalog/architecture/xpconnect/
何となくわかったような気がする。
というかこれだけわかればいいか。
ファイルの読み書きができればいーし。
あとでソース書いてみる。
-
- -