使用 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.lookupPath
、FS.isFile
和 FS.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;
}
请注意,这可能会破坏符号链接,但这应该是一个简单的添加。
如何使用 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.lookupPath
、FS.isFile
和 FS.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;
}
请注意,这可能会破坏符号链接,但这应该是一个简单的添加。