如何覆盖FileSystem API中的文件

时间:2015-02-11 15:52:16

标签: javascript google-chrome html5-filesystem persistent-storage

这是功能:

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 }

它只会覆盖旧内容,但不会清除它。我是否必须在写入之前删除该文件,或者是否有我遗漏的文件?

2 个答案:

答案 0 :(得分:1)

据我所知,write方法会将提供的内容写入某个位置。对我而言,这意味着除非您覆盖部件,否则现有内容不会受到影响。所以我要说是,删除文件并保存一个新文件。

source

答案 1 :(得分:0)

根据仅使用{ create: true}的Mozilla文档:

  

现有文件或目录被删除,并替换为新文件或目录,   然后使用FileSystemFileEntry或   FileSystemDirectoryEntry,视情况而定。

似乎已在Chrome 72中进行了测试。

此操作无效,因为该文件似乎一直存在。该文件将被覆盖(第一个字节),但大小将保持不变。因此,至少在Chrome 72中,这是一个错误。

Source