FileSystemSyncAccessHandle: write() method
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is only available in Dedicated Web Workers.
Phương thức write() của giao diện FileSystemSyncAccessHandle ghi nội dung của một buffer được chỉ định vào tệp liên kết với handle, tùy chọn tại một offset nhất định.
Các tệp trong hệ thống tệp riêng tư của nguồn gốc không hiển thị cho người dùng cuối, do đó không phải chịu các kiểm tra bảo mật giống như các phương thức chạy trên tệp trong hệ thống tệp hiển thị cho người dùng. Do đó, các lệnh ghi thực hiện bằng FileSystemSyncAccessHandle.write() có hiệu suất cao hơn nhiều.
Cú pháp
write(buffer, options)
Tham số
buffer-
Một
ArrayBufferhoặcArrayBufferView(chẳng hạnDataView) đại diện cho buffer cần ghi vào tệp. optionsOptional-
Một đối tượng tùy chọn chứa các thuộc tính sau:
at-
Một số đại diện cho offset tính bằng byte từ đầu tệp mà buffer sẽ được ghi vào.
Giá trị trả về
Một số đại diện cho số byte được ghi vào tệp.
Ngoại lệ
InvalidStateErrorDOMException-
Được ném ra nếu access handle liên kết đã bị đóng, hoặc nếu việc sửa đổi dữ liệu nhị phân của tệp hoàn toàn thất bại.
QuotaExceededError-
Được ném ra nếu dung lượng dữ liệu tăng thêm vượt quá hạn ngạch lưu trữ của trình duyệt.
TypeError-
Được ném ra nếu hệ thống tệp cơ bản không hỗ trợ ghi tệp từ offset tệp được chỉ định.
Ví dụ
Hàm xử lý sự kiện bất đồng bộ dưới đây nằm trong một Web Worker. Khi nhận thông báo từ luồng chính, nó ghi thông báo vào cuối tệp:
onmessage = async (e) => {
// Retrieve message sent to work from main script
const message = e.data;
// Get handle to draft file
const root = await navigator.storage.getDirectory();
const draftHandle = await root.getFileHandle("draft.txt", { create: true });
// Get sync access handle
const accessHandle = await draftHandle.createSyncAccessHandle();
// Get size of the file.
const fileSize = accessHandle.getSize();
// Read file content to a buffer.
const buffer = new DataView(new ArrayBuffer(fileSize));
const readBuffer = accessHandle.read(buffer, { at: 0 });
// Write the message to the end of the file.
const encoder = new TextEncoder();
const encodedMessage = encoder.encode(message);
const writeBuffer = accessHandle.write(encodedMessage, { at: readBuffer });
// Persist changes to disk.
accessHandle.flush();
// Always close FileSystemSyncAccessHandle if done.
accessHandle.close();
};
Note:
Trong các phiên bản trước của đặc tả, close(), flush(), getSize(), và truncate() được chỉ định sai là phương thức bất đồng bộ. Tuy nhiên, tất cả các trình duyệt hiện tại hỗ trợ các phương thức này đều triển khai chúng là phương thức đồng bộ.
Thông số kỹ thuật
| Specification |
|---|
| File System> # api-filesystemsyncaccesshandle-write> |