读取所有目录项内容
Reading All Directory Entry Contents
本文关键字:读取 更新时间:2023-09-26
我试图读取目录条目内的所有条目。我可以这样做,但我不确定将代码放在哪里,当它完全完成时应该发生。这是我的文件:
function readcontents(folder, callback) {
var contents = []
function readsome(reader) {
reader.readEntries(function(entries) {
for(var entry of entries) {
if(entry.isDirectory) {
readsome(entry.createReader())
} else {
contents.push(entry)
}
}
if(entries.length) {
readsome(reader)
}
})
}
readsome(folder.createReader())
}
我可以通过保持一个计数器来确定它何时结束。
function readcontents(folder, callback) {
var reading = 0
var contents = []
function readsome(reader) {
reading = reading + 1
reader.readEntries(function(entries) {
reading = reading - 1
for(var entry of entries) {
if(entry.isDirectory) {
readsome(entry.createReader())
} else {
contents.push(entry)
}
}
if(entries.length) {
readsome(reader)
} else if(reading == 0) {
callback(contents)
}
})
}
readsome(folder.createReader())
}
readcontents(folder, function(files) {
console.log(files)
})
我在很多地方寻找这个问题的答案,但最终还是自己做了。该函数跟踪它仍然需要读取的所有子目录,然后递归地调用自己,将每个子目录添加到找到的文件列表中。当没有子目录时,它将使用列表回调。
function readDirRecursive(dir, callback) {
const subDirs = [];
function readDir(dir, files) {
files = files || [];
const reader = dir.createReader();
reader.readEntries(entries => {
Array.from(entries).forEach(entry => {
if(entry.isDirectory) {
subDirs.push(entry);
} else {
files.push(entry);
}
});
if (!subDirs.length) {
return callback(files);
}
readDir(subDirs.pop(), files);
});
}
readDir(dir);
}
注意:要从条目中获取实际的文件,您需要执行以下操作:
readDirRecursive(directory, entries => {
entries.map(e => e.file(f => doSomethingWithFile(f));
});
相关文章:
- 从桌面读取python文件时高亮显示代码
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- 未捕获的类型错误:无法读取属性'删除'的未定义
- AngularJS指令出错-无法读取属性'编译'的未定义
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 如何在Javascript中读取unsigned int
- 如何读取表单中的输入数据
- 通过传递图像的URL通过javascript读取/处理图像-类似于PHP中的file_get_contents
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- angularjs无法读取未定义的属性then
- 正在读取JSON,数据未显示
- 无法读取属性'材料'未定义的Three.js