FileSystemHandle: phương thức remove()

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.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.

Phương thức remove() của giao diện FileSystemHandle yêu cầu xóa mục nhập được biểu diễn bởi handle khỏi hệ thống file nền.

Phương thức remove() cho phép bạn xóa trực tiếp một file hoặc thư mục từ handle của nó. Nếu không có phương thức này, bạn sẽ phải lấy handle của thư mục cha rồi gọi FileSystemDirectoryHandle.removeEntry() trên đó để xóa nó.

Bạn cũng có thể gọi remove() trên thư mục gốc của Origin Private File System để xóa toàn bộ nội dung của nó; sau đó một OPFS mới, rỗng, sẽ được tạo.

Cú pháp

js
remove()
remove(options)

Tham số

options Optional

Một object chỉ định các tùy chọn cho thao tác xóa. Các thuộc tính có thể có như sau:

recursive Optional

Một giá trị boolean mặc định là false. Khi đặt thành true và mục nhập là thư mục, toàn bộ nội dung của nó sẽ bị xóa đệ quy.

Giá trị trả về

Một Promise được hoàn thành với giá trị undefined.

Ngoại lệ

InvalidModificationError DOMException

Được ném ra nếu recursive được đặt thành false và mục nhập cần xóa là một thư mục có phần tử con.

NoModificationAllowedError DOMException

Được ném ra nếu trình duyệt không thể giành được khóa độc quyền trên mục nhập.

NotAllowedError DOMException

Được ném ra nếu PermissionStatus không phải là granted.

NotFoundError DOMException

Được ném ra nếu không tìm thấy mục nhập.

Ví dụ

Demo FileSystemHandle.remove() của chúng tôi (xem mã nguồn) là một ứng dụng tạo file. Bạn có thể nhập văn bản vào <textarea> rồi nhấn nút <button> "Save file", và ứng dụng sẽ mở một bộ chọn file cho phép bạn lưu văn bản đó vào hệ thống file cục bộ dưới dạng file văn bản mà bạn chọn. Bạn cũng có thể chọn xóa các file đã tạo.

Ứng dụng không cho phép xem nội dung các file đã tạo và cũng không đồng bộ với hệ thống file nền khi tải lại hoặc đóng trang. Điều này có nghĩa là các file do ứng dụng tạo ra vẫn sẽ tồn tại trên hệ thống file nếu bạn không chọn xóa chúng trước khi tải lại hoặc đóng tab.

File picker, file handle, và bản thân file nếu bạn đang tạo file mới, được tạo bằng window.showSaveFilePicker(). Văn bản được ghi vào file qua FileSystemFileHandle.createWritable().

Khi một file đã được tạo trên hệ thống file, một mục được tạo trong ứng dụng (xem processNewFile() trong mã nguồn):

  • Một tham chiếu tới file handle được lưu trong mảng savedFileRefs để có thể tham chiếu lại sau này.
  • Một mục danh sách được thêm bên dưới tiêu đề "Saved files" trong giao diện, với tên file hiển thị cùng một nút "Delete".

Khi nhấn nút "Delete", hàm deleteFile() sẽ chạy, trông như sau:

js
async function deleteFile(e) {
  for (const handle of savedFileRefs) {
    if (handle.name === `${e.target.id}.txt`) {
      await handle.remove();
      savedFileRefs = savedFileRefs.filter(
        (handle) => handle.name !== `${e.target.id}.txt`,
      );
      e.target.parentElement.parentElement.removeChild(e.target.parentElement);
    }
  }
}

Diễn giải:

  1. Với mỗi file handle được lưu trong mảng savedFileRefs, chúng ta kiểm tra tên của nó xem có khớp với thuộc tính id của nút đã kích hoạt sự kiện hay không.
  2. Khi tìm thấy phần tử khớp, chúng ta gọi FileSystemHandle.remove() trên handle đó để xóa file khỏi hệ thống file nền.
  3. Chúng ta cũng loại bỏ handle khớp khỏi mảng savedFileRefs.
  4. Cuối cùng, chúng ta xóa mục danh sách tương ứng trong giao diện người dùng.

Thông số kỹ thuật

Tính năng này chưa thuộc về bất kỳ đặc tả nào, nhưng có thể trở thành tiêu chuẩn trong tương lai. Xem whatwg/fs#9 để biết chi tiết.

Tương thích trình duyệt

Xem thêm