Javascript 如何在文件系统API中覆盖文件
以下是函数:Javascript 如何在文件系统API中覆盖文件,javascript,google-chrome,html5-filesystem,persistent-storage,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.createW
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}
它只是覆盖旧内容,但不清除它。我是否必须在写入文件之前删除该文件,或者是否缺少某些内容?因为据我所知,写入方法会将提供的内容写入某个位置。对我来说,这意味着现有的内容是不变的,除非您正在覆盖部分。所以我要说是的,删除这个文件并保存一个新的
根据Mozilla文档,仅使用{create:true}
:
现有文件或目录将被删除并替换为新文件或目录,
然后使用FileSystemFileEntry或
FileSystemDirectoryEntry,视情况而定
在Chrome72上进行测试,似乎就是这样
这不起作用,因为文件似乎是持久的。文件将被覆盖(第一个字节),但大小将保持不变。这至少是Chrome72中的一个bug