tested on Firefox 7.0.1
const Ci = Components.interfaces;
const Cc = Components.classes;
function ReadWrite( data ){
try{
Components.utils.import("resource://gre/modules/NetUtil.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var file = FileUtils.getFile("ProfD", ["FileName.txt"]);
var ostream = FileUtils.openSafeFileOutputStream(file );
var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].
createInstance(Ci.nsIScriptableUnicodeConverter);
if( data ){
if ( !file.exists() ){
file.create( Ci.nsIFile.NORMAL_FILE_TYPE, 420);
}
converter.charset = "UTF-8";
var istream = converter.convertToInputStream(data);
NetUtil.asyncCopy(istream , ostream, function(status) {
if (!Components.isSuccessCode(status)) {
alert( "Error! :" + status );
return false;
}
});
}else{
var data = '';
var fstream = Cc["@mozilla.org/network/file-input-stream;1"].
createInstance(Ci.nsIFileInputStream);
var cstream = Cc["@mozilla.org/intl/converter-input-stream;1"].
createInstance(Ci.nsIConverterInputStream);
fstream.init(file, -1, 0, 0);
cstream.init(fstream, "UTF-8", 0, 0); // you can use another encoding here if you wish
let (str = {}) {
let read = 0;
do {
read = cstream.readString(0xffffffff, str); // read as much as we can and put it in str.value
data += str.value;
} while (read != 0);
}
cstream.close(); // this closes fstream
return data;
}
}catch(e){
// alert( e);
return false;
}
}
This is a small function to use in Firefox extension development which makes use of the referrer parameter sent to loadURI() and addTab() functions