我正在尝试使用
HTML5 File API,我需要使用一个我不够了解的方法(只因为它几乎不记录在内).
我在谈论FileWriter truncate()方法,我知道这是我需要做的.基本上,我不想将文本附加到某些文件数据或使用seek()来覆盖某个部分,而是要用其他的东西覆盖所有的数据(例如从“somedata”到“”).
以下是来自HTML5Rocks的FileWriter设置的一段代码,其中添加了truncate().
function onInitFs(fs) { fs.root.getFile('log.txt',{create: false},function(fileEntry) { // Create a FileWriter object for our FileEntry (log.txt). fileEntry.createWriter(function(fileWriter) { fileWriter.seek(fileWriter.length); // Start write position at EOF. fileWriter.truncate(1); // Create a new Blob and write it to log.txt. var bb = new BlobBuilder(); // Note: window.WebKitBlobBuilder in Chrome 12. bb.append('Hello World'); fileWriter.write(bb.getBlob('text/plain')); },errorHandler); },errorHandler); } window.requestFileSystem(window.PERSISTENT,1024*1024,onInitFs,errorHandler);
当调用writer.truncate()时,调用writer.write()会引发File Exception错误.我相信这是因为readyState设置为WRITING.不幸的是,我不知道如何解决.
我已经试过看过这个HTML5Rocks section,但它并没有告诉我关于truncate()方法的任何事情(尽管我知道它存在于Webkit JS控制台告诉我什么).
解决方法
这样的事情可能还有一点点:
truncate Changes the length of the file to that specified
fileEntry.createWriter(function(fileWriter) { var truncated = false; fileWriter.onwriteend = function(e) { if (!truncated) { truncated = true; this.truncate(this.position); return; } console.log('Write completed.'); }; fileWriter.onerror = function(e) { console.log('Write Failed: ' + e.toString()); }; var blob = new Blob(['helo'],{type: 'plain/text'}); fileWriter.write(blob); },errorHandler);