MDN File I/Oページのこのコードをそのままコピーしました。ファイルがすでに存在するかどうかを確認するif文を追加しました。ローカルマシン上のファイルの読み書き
Components.utils.import("resource://gre/modules/NetUtil.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var file = Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).
get("Desk", Components.interfaces.nsIFile);
file.append("test.txt");
if (!file.exists()) {
this.user_id = Math.floor(Math.random()*10001) +'-'+ Math.floor(Math.random()*10001) +'-'+ Math.floor(Math.random()*10001) +'-'+ Math.floor(Math.random()*10001);
var ostream = FileUtils.openSafeFileOutputStream(file)
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
var istream = converter.convertToInputStream(this.user_id);
// The last argument (the callback) is optional.
NetUtil.asyncCopy(istream, ostream, function(status) {
if (!Components.isSuccessCode(status)) {
alert('Error '+ status);
return;
}
alert('File created');
});
} else
{
NetUtil.asyncFetch(file, function(inputStream, status) {
if (!Components.isSuccessCode(status)) {
alert('error '+ status);
return;
}
// The file data is contained within inputStream.
// You can read it into a string with
this.user_id = NetUtil.readInputStreamToString(inputStream, inputStream.available());
});
alert('File exists already, do not create');
}
alert(this.user_id);
ファイルを作成して開き、読み込むことができます。ただし、ファイルがすでに存在する場合は、this.user_id
..の値はnullに等しくなりません。だから私の問題は、特にファイルを読むことです。あなたのコードが完了したことを意味NetUtil.asyncFetch()
からのコールバックにデータが呼び出されますいくつかの点で、その後、(alert()
this.user_id
がnull
であることが表示されますコールを含む) - あなたのコードを読み込む
ファイルの内容が正しいかどうか確認しましたか? –
@David - あなたが 'contentType'を参照していることを私が知っているかどうかわからないのですか? – thefoyer