Я экспериментирую с API файлов HTML5, и мне нужно использовать метод, о котором я недостаточно знаю (просто потому, что он почти нигде не документирован ).
Я говорю о методе 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 установлено значение WRITING. К сожалению, я не знаю, как это обойти.
Я уже пробовал просмотреть раздел HTML5Rocks по этому поводу, но он мне ничего не говорит о методе truncate () ( хотя я знаю, что он существует из того, что сообщает мне консоль Webkit JS).
Короче говоря, как я могу правильно использовать метод truncate (), не получая сообщения об ошибке?