使用 Emscripten 文件 API 在文件夹内循环递归

Loop recursive inside a folder using Emscripten File API

如何使用 Emscripten 在文件夹内循环播放文件?

例如,我在文件夹 '/res' (FS.mkdir('/res')) 中创建了数据,在 '/res'.

中创建了一些数据临时文件和子文件夹

如何在里面循环文件和文件夹?

我刚找到 FS.isDir()。但仅此而已。 提取数据(文件名)的正确方法是什么:

/res/file1.txt
/res/file2.txt
/res/file2.txt
/res/dir/file01.txt
/res/dir/file02.txt

等等

FS.readdir() returns 个子目录。

FS.readdir 列出目录的所有名称(文件和文件夹),但不是递归的。您可以使用 FS.lookupPathFS.isFileFS.isDir 递归抓取文件系统。

function fsReadAllFiles(folder) {
  const files = [];

  function impl(curFolder) {
    for (const name of FS.readdir(curFolder)) {
      if (name === '.' || name === '..') continue;

      const path = `${curFolder}/${name}`;
      const { mode, timestamp } = FS.lookupPath(path).node;
      if (FS.isFile(mode)) {
        files.push({path, timestamp});
      } else if (FS.isDir(mode)) {
        impl(path);
      }
    }
  }

  impl(folder);
  return files;
}

请注意,这可能会破坏符号链接,但这应该是一个简单的添加。