FileSystemWritableFileStream: truncate() method
Baseline
2025
Newly available
Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
Phương thức truncate() của giao diện FileSystemWritableFileStream thay đổi kích thước tệp liên kết với luồng thành kích thước được chỉ định tính bằng byte.
Nếu kích thước được chỉ định lớn hơn kích thước tệp hiện tại, tệp sẽ được đệm bằng các byte 0x00.
Con trỏ tệp cũng được cập nhật khi truncate() được gọi.
Nếu offset nhỏ hơn kích thước, nó vẫn không thay đổi.
Nếu offset lớn hơn kích thước, offset được đặt thành kích thước đó.
Điều này đảm bảo các lần ghi tiếp theo không gặp lỗi.
Không có thay đổi nào được ghi vào tệp thực sự trên đĩa cho đến khi luồng được đóng. Các thay đổi thường được ghi vào một tệp tạm thời thay thế.
Cú pháp
truncate(size)
Tham số
size-
Một số xác định số byte để thay đổi kích thước luồng.
Giá trị trả về
Một Promise trả về undefined.
Ngoại lệ
NotAllowedErrorDOMException-
Được ném ra nếu
PermissionStatus.statekhông phải làgranted. QuotaExceededError-
Được ném ra nếu kích thước mới của tệp lớn hơn kích thước gốc của tệp và vượt quá hạn ngạch lưu trữ của trình duyệt.
TypeError-
Được ném ra nếu
sizekhông phải là số hoặc không được xác định.
Ví dụ
Hàm bất đồng bộ sau đây mở hộp thoại 'Save File', trả về FileSystemFileHandle khi một tệp được chọn. Từ đó, một luồng ghi được tạo bằng phương thức FileSystemFileHandle.createWritable().
Tiếp theo, chúng ta ghi vào luồng:
- Một chuỗi văn bản được ghi vào luồng.
- Phương thức
truncate()được sử dụng để thay đổi kích thước tệp thành 8 byte. - Một chuỗi văn bản thứ hai được ghi vào đầu luồng, ghi đè lần ghi đầu tiên.
Sau đó luồng được đóng lại.
async function saveFile() {
try {
// create a new handle
const newHandle = await window.showSaveFilePicker();
// create a FileSystemWritableFileStream to write to
const writableStream = await newHandle.createWritable();
// write our file
await writableStream.write("This is my first file content");
await writableStream.truncate(8);
await writableStream.write("my second file content");
// close the file and write the contents to disk.
await writableStream.close();
} catch (err) {
console.error(err.name, err.message);
}
}
Nếu bạn chạy hàm trên và sau đó mở tệp kết quả được tạo trên đĩa, bạn sẽ thấy văn bản "This is my second file content".
Thông số kỹ thuật
| Specification |
|---|
| File System> # api-filesystemwritablefilestream-truncate> |