たぶんこんな感じ。
var path = "D:\\hoge\\fuga.xxx"; var localFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); localFile.initWithPath(path); var fileInputStream = Components.classes["@mozilla.org/network/file-input-stream;1"] .createInstance(Components.interfaces.nsIFileInputStream); fileInputStream.init(localFile, 0x01, 0444, 0); var binaryInputStream = Components.classes["@mozilla.org/binaryinputstream;1"] .createInstance(Components.interfaces.nsIBinaryInputStream); binaryInputStream.setInputStream(fileInputStream); var byteArray = binaryInputStream.readByteArray(binaryInputStream.available()); fileInputStream.close(); var uriEncoded = []; for(var i = 0; i < byteArray.length; i++){ if(byteArray[i] < 16){ uriEncoded.push("%0" + byteArray[i].toString(16)); } else{ uriEncoded.push("%" + byteArray[i].toString(16)); } } // http://nanto.asablo.jp/blog/2006/10/23/572458 // toUTF8Octets って関数のパクリ var result = btoa(unescape(uriEncoded.join(""))); alert(result);
追記。ストリーム閉じ忘れてたぜ。
さらに追記。16 進変換のところがマズいことになってたぜ。