私は HTML5 ファイル API を試していますが、よくわからないメソッドを使用する必要があります (どこにもほとんど文書化されていないため)。
FileWriter の truncate() メソッドについて話しているのですが、それが必要なことを実行してくれることはわかっています。基本的に、一部のファイル データにテキストを追加したり、seek() を使用して特定の部分を上書きしたりするのではなく、すべてのデータを別のもの (たとえば、"somedata" から "") で上書きしたいと考えています。
これは、truncate() が追加された、HTML5Rocks からの FileWriter セットアップのスニペットです。
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() メソッドを正しく使用するにはどうすればよいですか?