※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

書き込み

ローカルファイルをUTF-8で書き込み(非同期)

非同期の処理にES6のPromiseを使用しているので、Promiseの機能も理解している必要が有る。
Cu.import("resource://gre/modules/osfile.jsm");
let filePath = "C:\\temp\\sample.txt";
let promise = OS.File.writeAtomic(filePath, "sample text",
    { encoding: "utf-8", tmpPath: filePath + ".temp" });
promise.then(text => {
    console.log('テキストファイルを書き込みました。');
}, e => {
    console.error('ファイルの書き込みが出来ませんでした。:' + e);
}); 
フォルダを作ったりはしてくれないので、フォルダは事前に用意する。

読み込み

ローカルファイルをUTF-8で読み込み(非同期)

非同期の読み込みでパフォーマンスが良いので普通はこれで。
Cu.import("resource://gre/modules/osfile.jsm");
const filePath = "C:\\temp\\sample.txt";
let promise = OS.File.read(filePath, { encoding: "utf-8" });
promise.then(text => {
    console.log('テキストファイルを読み込みました。:' + text);
}, e => {
    console.error('ファイルの読み込みが出来ませんでした。:' + e);
});

ローカルファイルをUTF-8で読み込み(同期)

どうしても同期読み込みをしたければこちらを使用。
Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");
let file = new FileUtils.File("C:\\temp\\sample.txt");
if (!file.exists()) {
    console.error('ファイルが存在しません。');
    return;
}
let fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
fis.init(file, -1, 0, 0);
let text = NetUtil.readInputStreamToString(fis, fis.available(), {charset:"UTF-8"});
console.log('テキストファイルを読み込みました。:' + text); 

chromeファイルをUTF-8で読み込み(非同期)

Cu.import("resource://gre/modules/NetUtil.jsm");
let file = "chrome://sample/content/sample.txt";
NetUtil.asyncFetch(file, function(aInputStream, aResult) {
    if (!Components.isSuccessCode(aResult)) {
        console.error('ファイルの読み込みが出来ませんでした。');
        return;
    }
    let text = NetUtil.readInputStreamToString(aInputStream, aInputStream.available(), {charset:"UTF-8"});
    console.log('テキストファイルを読み込みました。:' + text);
}