在阅读目录时,我目前有以下内容:
fs.readdir(tests, (err, items) => {
if(err){
return cb(err);
}
const cmd = items.filter(v => fs.lstatSync(tests + '/' + v).isFile());
k.stdin.end(`${cmd}`);
});
Run Code Online (Sandbox Code Playgroud)
首先,我需要在 fs.lstatSync 周围进行 try/catch,我不想添加它。但是有没有办法fs.readdir只用来查找文件呢?
就像是:
fs.readdir(tests, {type:'f'}, (err, items) => {});
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
从节点 v10.10.0 开始,您可以添加withFileTypes作为选项参数以获取fs.Dirent而不是字符串。
// or readdir to get a promise
const subPaths = fs.readdirSync(YOUR_BASE_PATH, {
withFileTypes: true
});
// subPaths is fs.Dirent[] type
const directories = subPaths.filter((dirent) => dirent.isFile());
// directories is string[] type
Run Code Online (Sandbox Code Playgroud)
更多信息位于节点文档:
不幸的是,fs.readdir没有选项指定您只查找文件,而不是文件夹/目录(根据文档)。过滤结果以fs.readdir剔除目录是最好的选择。
https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_readdir_path_options_callback
可选
options参数可以是指定编码的字符串,也可以是具有encoding指定用于传递给回调的文件名的字符编码的属性的对象。如果encoding设置为'buffer',则返回的文件名将作为对象传递Buffer。
| 归档时间: |
|
| 查看次数: |
5639 次 |
| 最近记录: |