我的js
位于FF addon
内,因此可以访问prilivaged api
。目前,我可以将字符串附加到文件或截断文件并编写string
。
但是有一种简单的方法可以将string
添加到文件中吗?因此我的string
位于文件的开头,然后是现有内容。
FileUtils.openSafeFileOutputStream(file, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE)
FileUtils.openFileOutputStream(file, FileUtils.MODE_WRONLY | FileUtils.MODE_APPEND)
main.js
内容..
Cu.import("resource://gre/modules/NetUtil.jsm");
Cu.import("resource://gre/modules/FileUtils.jsm");
var filename = 'test.txt',
ostream,
string = 'test content',
file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath('/home/user/');
file.append(fileName);
try {
if (file.exists() === false) {
file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 420);
}
ostream = FileUtils.openSafeFileOutputStream(file, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE);
var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
var istream = converter.convertToInputStream(combinedString);
NetUtil.asyncCopy(istream, ostream, function (status) {
if (!components.isSuccessCode(status)) {
console.log('success: ' + file.path);
} else {
console.log('error: ' + file.path);
}
});
} catch (e) {
return false;
}
答案 0 :(得分:0)
最后使用OS.File
,读取文件内容,将字符串前置到数据然后将组合数据写回文件..
let promise = OS.File.read(filePath);
promise = promise.then(function onSuccess(contents) {
let text = new TextDecoder().decode(contents);
combinedString = combinedString + '\n\n' + text;
if (System.getPlatform().indexOf('win') >= 0)
combinedString = combinedString.replace(/[\n]/g, '\r\n');
let encodedArray = new TextEncoder().encode(combinedString);
var promise = OS.File.writeAtomic(filePath, encodedArray);
promise.then(
function() {
console.log('success');
},
function(ex) {
console.log('error');
}
);
return true;
},
function onError(reason) {
if (System.getPlatform().indexOf('win') >= 0)
combinedString = combinedString.replace(/[\n]/g, '\r\n');
let encodedArray = new TextEncoder().encode(combinedString);
if (reason.becauseNoSuchFile()) {
var promise = OS.File.writeAtomic(filePath, encodedArray);
promise.then(
function() {
console.log('success');
},
function(ex) {
console.log('error');
}
);
return false;
}
});