javascript - 使用 showDirectoryPicker() 访问子目录文件内容

标签 javascript html file-system-access-api

使用 File System Access API , 我将如何访问所选目录的文件夹中包含的文件?

document.querySelector('button').addEventListener('click', async () => {
  const dirHandle = await window.showDirectoryPicker();
  for await (const entry of dirHandle.values()) {
    if (entry.kind === "file"){
      const file = await entry.getFile();
      const text = await file.text();
      console.log(text);
    }
    if (entry.kind === "directory"){
      /* for file in this directory do something */ 
    }
  }
});
<button>Choose Directory</button>

最佳答案

您需要调用 dirHandle.getDirectoryHandle(name, options)方法,将 name 参数设置为条目的 .name

这是一个示例代码,它将遍历传递的目录并构建它找到的文件的树。

btn.onclick = async (evt) => {
  const out = {};
  const dirHandle = await showDirectoryPicker();  
  await handleDirectoryEntry( dirHandle, out );
  console.log( out );
};
async function handleDirectoryEntry( dirHandle, out ) {
  for await (const entry of dirHandle.values()) {
    if (entry.kind === "file"){
      const file = await entry.getFile();
      out[ file.name ] = file;
    }
    if (entry.kind === "directory") {
      const newHandle = await dirHandle.getDirectoryHandle( entry.name, { create: false } );
      const newOut = out[ entry.name ] = {};
      await handleDirectoryEntry( newHandle, newOut );
    }
  }
}

Live demo , edit code .

关于javascript - 使用 showDirectoryPicker() 访问子目录文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67979844/

相关文章:

javascript - 如何使用文件系统访问 API 在 Web 浏览器中递归读取本地文件和目录

javascript - 我可以将特定驱动器(例如 ,"D:\")设置为 showOpenFilePicker 的默认目录吗?

javascript - document.execCommand() 以像素为单位的字体大小?

javascript - 即使元素的值也在 CSS 中设置,也获取内联样式值?

javascript - Kendo ui kendoSortable 不起作用

javascript - 两列菜单的 Material Design Lite 示例 - 在 Chrome 中不起作用

javascript - 如何使用 JavaScript 对 BIRT 上的 ip 地址进行排序?

html - Div 具有图像的实际宽度而不是计算宽度

javascript - 拖动时摆脱半透明圆形CSS div中的背景颜色

reactjs - 在 Electron + Create React App 中使用文件系统访问 API 写入文件失败