我正在使用HTML5 FileWriter API保存Webapp的状态。我有一些JS,它定期调用FileWriter.write来做到这一点(因此,随着时间的推移,write方法被调用了几次)。默认情况下,FileWriter API使用“追加”方法写入文件,由于我不想覆盖文件内容,因此不适合我的需求。

我首先尝试了这个:

this._writer.seek(0);
this._writer.write(content);

当您编写的文本短于文件内容时,此方法不起作用。然后我尝试了这个:
this._writer.truncate(0);
this._writer.write(content);

这段代码应该清除文件,然后写入我的新内容,但是当调用write方法时出现以下错误:
Uncaught InvalidStateError: An operation that depends on state cached in an interface object was made but the state had changed since it was read from disk.

奇怪的是:当我调试代码(带有断点)时,不会发生错误,好像FileWriter.truncate是一个异步方法...

我被困在这里,有什么想法吗?

我正在使用Chrome 30.0.1599.69

最佳答案

这是正确的代码,不会浪费500毫秒的等待时间

fileWriter.onwriteend = function() {
    if (fileWriter.length === 0) {
        //fileWriter has been reset, write file
        fileWriter.write(blob);
    } else {
        //file has been overwritten with blob
        //use callback or resolve promise
    }
};
fileWriter.truncate(0);

关于javascript - 用HTML5 FileWriter覆盖文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19426698/

10-10 01:12