例1:fs.opendir的使用
const fs = require('fs')
//打开当前目录
fs.opendir('./',async (err, dir) => {
if(err) {
console.error(err)
return
}
console.log(dir)
console.log(typeof dir)
//for await...of 语句创建一个循环,该循环遍历异步可迭代对象以及同步可迭代对象,
// 包括: 内置的 String, Array,类似数组对象 (例如 arguments 或 NodeList),TypedArray, Map, Set 和用户定义的异步/同步迭代器。
// 类似于 await 运算符一样,该语句只能在一个async function 内部使用。
for await (const dirent of dir) {//dir是一个异步可迭代对象
console.log(dirent)
}
})
执行结果:

例2:fs.opendirSync的使用
const fs = require('fs')
//打开当前目录 返回异步可迭代对象dir
const dir = fs.opendirSync('./')
console.log(dir)
//输出当前目录下的文件
async function print() {
for await (const dirent of dir) {
console.log(dirent)
}
}
print()
执行结果:

例3:fs.promises.opendir的使用
const fs = require('fs')
async function print(path) {
//打开当前目录 返回异步可迭代对象dir
const dir = await fs.promises.opendir(path);
console.dir(dir)
//打印path目录下的文件
for await (const dirent of dir) {
console.log(dirent);
}
}
print('./').catch(err => console.error(err));
执行结果:

网友评论