Tôi đang thử nghiệm API API của HTML5 và tôi cần sử dụng một phương pháp mà tôi không biết đủ (chỉ đơn giản vì nó hầu như không được ghi lại ở bất kỳ đâu).Sử dụng phương pháp HTML5 FileWriter truncate()?
Tôi đang nói về phương thức FileWriter truncate() và tôi biết nó cần làm những gì tôi cần làm. Về cơ bản, thay vì thêm văn bản vào một số dữ liệu tệp hoặc sử dụng seek() để ghi đè lên một phần nhất định, tôi muốn ghi đè tất cả dữ liệu bằng dữ liệu khác (ví dụ: từ "somedata" tới "").
Dưới đây là một đoạn của việc thiết lập FileWriter từ HTML5Rocks, với truncate() được thêm vào trong.
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);
Khi nó được để gọi writer.truncate(), gọi writer.write() ném một ngoại lệ File error . Tôi tin rằng điều này là do readyState được đặt thành WRITING. Thật không may, tôi không biết làm thế nào để có được xung quanh đó.
Tôi đã thử xem qua HTML5Rocks section về điều này, nhưng nó không cho tôi biết bất kỳ điều gì về phương thức cắt ngắn() mặc dù tôi biết nó tồn tại từ những gì mà Bảng điều khiển JS của Webkit nói với tôi).
Ngắn câu chuyện ngắn, cách tôi có thể sử dụng phương thức cắt ngắn() một cách chính xác mà không gặp lỗi?
[W3C truncate spec] (http://www.w3.org/TR/file-writer-api/#widl-FileWriter-truncate) tận hưởng. – Raynos
Tại sao cắt ngắn (1)? Tại sao không cắt bớt (0) để có được một tập tin có kích thước bằng không? – huyz