「ファイルの読み書き」の編集履歴(バックアップ)一覧に戻る
ファイルの読み書き」を以下のとおり復元します。
#contents()
*ローカルファイルをUTF-8で読み込み(非同期)
-[[JavaScript OS.File | MDN>https://developer.mozilla.org/en-US/docs/JavaScript_OS.File]]
-[[Promise - JavaScript | MDN>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise]]
非同期の読み込みでパフォーマンスが良いので普通はこれで。
非同期の処理にES6のPromiseを使用しているので、Promiseの機能も理解している必要が有る。
#highlight(javascript){{
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で書き込み(非同期)
#highlight(javascript){{
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で読み込み(同期)
-[[File I/O - Mozilla | MDN>https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O]]
-[[FileUtils.jsm - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm]]
-[[NetUtil.jsm - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm]]
どうしても同期読み込みをしたければこちらを使用。
#highlight(javascript){{
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で読み込み(非同期)
-[[NetUtil.jsm - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm]]
#highlight(javascript){{
Cu.import("resource://gre/modules/NetUtil.jsm");
let chromePath = "chrome://sample/content/sample.txt";
let file = NetUtil.newURI(chromePath);
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);
} }}

----
*ローカルファイルをUTF-8で読み込み(非同期・古い方法)
OS.Fileを使用する方が良い。
#highlight(javascript){{
Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");
var file = new FileUtils.File("C:\\temp\\sample.txt");
if (!file.exists()) return;
NetUtil.asyncFetch(file, function(inputStream, status) {
    if (!Components.isSuccessCode(status)) retrun;
    var data = NetUtil.readInputStreamToString(inputStream, inputStream.available(), {charset:"UTF-8"});
}); }}

復元してよろしいですか?