Javascript 如何在Chrome应用程序中覆盖文件?

Javascript 如何在Chrome应用程序中覆盖文件?,javascript,google-chrome,filesystems,google-chrome-app,filewriter,Javascript,Google Chrome,Filesystems,Google Chrome App,Filewriter,我举了一个例子: chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) { chrome.fileSystem.getWritableEntry(entry, function(entry) { entry.getFile('file1.txt', {create:true}, function(entry) { entry.createWriter(functi

我举了一个例子:

chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) {
    chrome.fileSystem.getWritableEntry(entry, function(entry) {
        entry.getFile('file1.txt', {create:true}, function(entry) {
            entry.createWriter(function(writer) {
                writer.write(new Blob(['Lorem'], {type: 'text/plain'}));
            });
        });
        entry.getFile('file2.txt', {create:true}, function(entry) {
            entry.createWriter(function(writer) {
                writer.write(new Blob(['Ipsum'], {type: 'text/plain'}));
            });
        });
    });
});
覆盖某些现有文件
file1.txt
file2.txt

但我发现了一个问题:如果文件不是空的,它们的内容不会被完全覆盖,只有开始部分会被覆盖


我需要先删除文件吗?还是我遗漏了什么?

看起来
write
只会在指定的位置覆盖文件的内容,因此,如果要完全替换文件的文本,则需要先删除文件或将其截断,这是正确的

这段代码对我很有用,它在写入完成后将文件截断到编写器的位置

chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) {
    chrome.fileSystem.getWritableEntry(entry, function(entry) {
        entry.getFile('file1.txt', {create:true}, function(entry) {
            entry.createWriter(function(writer) {
                writer.onwriteend = function(e) {
                    e.currentTarget.truncate(e.currentTarget.position);
                };
                writer.write(new Blob(['Lorem'], {type: 'text/plain'}));
            });
        });
        entry.getFile('file2.txt', {create:true}, function(entry) {
            entry.createWriter(function(writer) {
                writer.onwriteend = function(e) {
                    e.currentTarget.truncate(e.currentTarget.position);
                };
                writer.write(new Blob(['Ipsum'], {type: 'text/plain'}));
            });
        });
    });
});

对我来说,truncate函数触发onwriteend事件,导致无限循环。然而,这对我很有用。