如何覆盖 Chrome App 中的文件?
How to overwrite a file in Chrome App?
我遵循了这个例子:
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
只覆盖指定 position 处的文件内容,所以你是对的,如果你想完全替换文件的文本,你需要要么先删除文件,要么截断它们。
这段代码对我有用,在写入完成后将文件截断到写入者的位置。
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'}));
});
});
});
});
我遵循了这个例子:
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
只覆盖指定 position 处的文件内容,所以你是对的,如果你想完全替换文件的文本,你需要要么先删除文件,要么截断它们。
这段代码对我有用,在写入完成后将文件截断到写入者的位置。
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'}));
});
});
});
});