書き込み
ローカルファイルを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);
}
最終更新:2014年11月17日 09:38