FileSystemDirectoryHandle

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 available in Web Workers.

Giao diện FileSystemDirectoryHandle của File System API cung cấp một handle cho một thư mục trong hệ thống tệp.

Giao diện này có thể được truy cập thông qua các phương thức window.showDirectoryPicker(), StorageManager.getDirectory(), DataTransferItem.getAsFileSystemHandle(), và FileSystemDirectoryHandle.getDirectoryHandle().

FileSystemHandle FileSystemDirectoryHandle

Thuộc tính thể hiện

Kế thừa các thuộc tính từ lớp cha của nó, FileSystemHandle.

Phương thức thể hiện

Kế thừa các phương thức từ lớp cha của nó, FileSystemHandle.

Các phương thức thông thường:

FileSystemDirectoryHandle.getDirectoryHandle()

Trả về một Promise được thực thi thành FileSystemDirectoryHandle cho một thư mục con có tên được chỉ định bên trong handle thư mục mà phương thức được gọi trên đó.

FileSystemDirectoryHandle.getFileHandle()

Trả về một Promise được thực thi thành một FileSystemFileHandle cho một tệp có tên được chỉ định, bên trong thư mục nơi phương thức được gọi.

FileSystemDirectoryHandle.removeEntry()

Cố gắng xóa không đồng bộ một mục nếu handle thư mục chứa một tệp hoặc thư mục có tên được chỉ định.

FileSystemDirectoryHandle.resolve()

Trả về một Promise được thực thi thành một Array các tên thư mục từ handle cha đến mục con được chỉ định, với tên của mục con là phần tử cuối cùng trong mảng.

Các phương thức của trình lặp bất đồng bộ:

FileSystemDirectoryHandle.entries()

Trả về một bộ lặp bất đồng bộ mới của các cặp [key, value] có thể liệt kê của chính đối tượng đã cho.

FileSystemDirectoryHandle.keys()

Trả về một bộ lặp bất đồng bộ mới chứa các khóa cho mỗi mục trong FileSystemDirectoryHandle.

FileSystemDirectoryHandle.values()

Trả về một bộ lặp bất đồng bộ mới chứa các giá trị cho mỗi mục trong đối tượng FileSystemDirectoryHandle.

FileSystemDirectoryHandle[Symbol.asyncIterator]()

Trả về một bộ lặp bất đồng bộ mới của các cặp [key, value] có thể liệt kê của chính đối tượng đã cho.

Ví dụ

Trả về handle thư mục

Ví dụ sau trả về một handle thư mục với tên được chỉ định; nếu thư mục chưa tồn tại, nó sẽ được tạo.

js
const dirName = "directoryToGetName";

// giả sử chúng ta có một handle thư mục: 'currentDirHandle'
const subDir = await currentDirHandle.getDirectoryHandle(dirName, {
  create: true,
});

Trả về đường dẫn tệp

Hàm bất đồng bộ sau dùng resolve() để tìm đường dẫn tới một tệp đã chọn, tương đối với một handle thư mục được chỉ định.

js
async function returnPathDirectories(directoryHandle) {
  // Lấy một file handle bằng cách hiển thị bộ chọn tệp:
  const handle = await self.showOpenFilePicker();
  if (!handle) {
    // Người dùng đã hủy, hoặc không mở được tệp.
    return;
  }

  // Kiểm tra xem handle có tồn tại bên trong handle thư mục của chúng ta không
  const relativePaths = await directoryHandle.resolve(handle);

  if (relativePath === null) {
    // Không nằm trong handle thư mục
  } else {
    // relativePath là một mảng các tên, biểu thị đường dẫn tương đối

    for (const name of relativePaths) {
      // ghi log từng mục
      console.log(name);
    }
  }
}

Trả về các handle cho mọi tệp trong một thư mục

Ví dụ sau quét đệ quy qua một thư mục để trả về các đối tượng FileSystemFileHandle cho từng tệp trong thư mục đó:

js
async function* getFilesRecursively(entry) {
  if (entry.kind === "file") {
    const file = await entry.getFile();
    if (file !== null) {
      file.relativePath = getRelativePath(entry);
      yield file;
    }
  } else if (entry.kind === "directory") {
    for await (const handle of entry.values()) {
      yield* getFilesRecursively(handle);
    }
  }
}
for await (const fileHandle of getFilesRecursively(directoryHandle)) {
  console.log(fileHandle);
}

Thông số kỹ thuật

Specification
File System
# api-filesystemdirectoryhandle

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

Xem thêm