Хороший улов. В коде, который я написал, я всегда хотел заменить onwriteend, чтобы установить следующий код. Я переписывал исходный код для использования асинхронного усечения, но я не думал о замене / обнулении функции onwriteend.
периментирую с HTML5 File API, и мне нужно использовать метод, о котором я не знаю достаточно (просто потому, что он практически нигде не документирован).
Я говорю о методе FileWriter truncate (), и я знаю, что он делает то, что мне нужно. По сути, вместо того, чтобы добавлять текст в некоторые данные файла или использовать seek () для перезаписи определенной части, я хочу перезаписать все данные чем-то другим (например, из «somedata» в «»).
Вот фрагмент настройки FileWriter из HTML5Rocks с добавлением 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 () вызывает ошибку исключения файла. Я считаю, что это потому, что ReadyState установлен в ПИСЬМО. К сожалению, я не знаю, как обойти это.
Я уже пытался смотреть черезHTML5Rocks раздел об этом, но он ничего не говорит мне о методе truncate () (хотя я знаю, что он существует из того, что говорит мне консоль Webkit JS).
Короче говоря, как я могу правильно использовать метод truncate () без ошибки?