无法从 fs.readdir 获取 fs.Dirent 的数组
Can't get array of fs.Dirent from fs.readdir
我正在使用节点 8.10.0。
fs.readdir()
returns 文件名和子目录名数组,或 fs.Dirents[]
.
我无法让它工作。这是一个简单的例子:
console.log(require("fs").readdirSync("/", {withFileTypes:true}));
这给了我一个字符串数组(例如 ["bin", "mnt", "usr", "var", ...]
),而不是一个 fs.Dirent
对象数组(这是我想要的)。
我如何让它工作?
已在 v10.10.0 中添加了所需的功能,您必须更新节点。
我遇到了同样的问题,虽然我有最新的 node.js(当前为 v10.16)并且 VS Code 中的智能感知与 online documentation 一致,但 run-time现实让我吃惊。但那是因为代码由 node.js v10.2(在 VS 代码扩展中)执行。
所以在 node.js 10.2 上,这段代码对我有用,可以在 directory
:
中获取文件
import * as fs from 'fs';
import util = require('util');
export const readdir = util.promisify(fs.readdir);
let fileNames: string[] = await readdir(directory)
// keep only files, not directories
.filter(fileName => fs.statSync(path.join(directory, fileName)).isFile());
在最新的 node.js 上,可以这样简化相同的代码:
let fileEnts: fs.Dirent[] = await fs.promises.readdir(directory, { withFileTypes: true });
let fileNames: string[] = fileEnts
.filter(fileEnt => fileEnt.isFile())
.map(fileEnt => fileEnt.name);
代码片段在 Typescript 中。
我正在使用节点 8.10.0。
fs.readdir()
returns 文件名和子目录名数组,或 fs.Dirents[]
.
我无法让它工作。这是一个简单的例子:
console.log(require("fs").readdirSync("/", {withFileTypes:true}));
这给了我一个字符串数组(例如 ["bin", "mnt", "usr", "var", ...]
),而不是一个 fs.Dirent
对象数组(这是我想要的)。
我如何让它工作?
已在 v10.10.0 中添加了所需的功能,您必须更新节点。
我遇到了同样的问题,虽然我有最新的 node.js(当前为 v10.16)并且 VS Code 中的智能感知与 online documentation 一致,但 run-time现实让我吃惊。但那是因为代码由 node.js v10.2(在 VS 代码扩展中)执行。
所以在 node.js 10.2 上,这段代码对我有用,可以在 directory
:
import * as fs from 'fs';
import util = require('util');
export const readdir = util.promisify(fs.readdir);
let fileNames: string[] = await readdir(directory)
// keep only files, not directories
.filter(fileName => fs.statSync(path.join(directory, fileName)).isFile());
在最新的 node.js 上,可以这样简化相同的代码:
let fileEnts: fs.Dirent[] = await fs.promises.readdir(directory, { withFileTypes: true });
let fileNames: string[] = fileEnts
.filter(fileEnt => fileEnt.isFile())
.map(fileEnt => fileEnt.name);
代码片段在 Typescript 中。