这是功能:
this.saveObj = function(o, finished)
{
root.getDirectory("object", {create: true}, function(directoryEntry)
{
directoryEntry.getFile("object.json", {create: true}, function(fileEntry)
{
fileEntry.createWriter(function(fileWriter)
{
fileWriter.onwriteend = function(e)
{
finished(fileEntry);
};
fileWriter.onerror = errorHandler;
var blob = new Blob([JSON.stringify(o)], {type: "json"});
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}, errorHandler);
};
现在,当我保存一个对象时,一切正常。假设我保存{"id":1}
我的文件内容为{"id":1}
。现在我使用o = {};
编辑对象并再次保存,我的文件内容突然变为{} "id":1 }
。
它只会覆盖旧内容,但不会清除它。我是否必须在写入之前删除该文件,或者是否有我遗漏的文件?
答案 0 :(得分:1)
据我所知,write方法会将提供的内容写入某个位置。对我而言,这意味着除非您覆盖部件,否则现有内容不会受到影响。所以我要说是,删除文件并保存一个新文件。
答案 1 :(得分:0)
根据仅使用{ create: true}
的Mozilla文档:
现有文件或目录被删除,并替换为新文件或目录, 然后使用FileSystemFileEntry或 FileSystemDirectoryEntry,视情况而定。
似乎已在Chrome 72中进行了测试。
此操作无效,因为该文件似乎一直存在。该文件将被覆盖(第一个字节),但大小将保持不变。因此,至少在Chrome 72中,这是一个错误。