如何覆盖FileSystem API中的文件

问题描述 投票:3回答:2

这是功能:

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 }

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

javascript google-chrome html5-filesystem persistent-storage
2个回答
1
投票

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

source


0
投票

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

删除现有文件或目录并替换为新文件或目录,然后根据需要使用FileSystemFileEntry或FileSystemDirectoryEntry调用successCallback。

在Chrome 72中测试过这种情况似乎就是这样。

这不起作用,因为文件似乎是持久的。该文件将被覆盖(第一个字节),但大小将保持不变。所以这至少是Chrome 72中的一个错误。

Source

© www.soinside.com 2019 - 2024. All rights reserved.