Node.js检查path是文件还是目录

我似乎无法得到任何解释如何做到这一点的search结果。

我想要做的就是能够知道给定的path是文件还是目录(文件夹)。

fs.lstatSync(path_string).isDirectory()应该告诉你。 从文档 :

从fs.stat()和fs.lstat()返回的对象是这种types的。

 stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket() 

以下是如何检测path是asynchronous文件还是目录,这是节点中推荐的方法。 使用fs.lstat

 const fs = require("fs"); let path = "/path/to/something"; fs.lstat(path, (err, stats) => { if(err) return console.log(err); //Handle error console.log(`Is file: ${stats.isFile()}`); console.log(`Is directory: ${stats.isDirectory()}`); console.log(`Is symbolic link: ${stats.isSymbolicLink()}`); console.log(`Is FIFO: ${stats.isFIFO()}`); console.log(`Is socket: ${stats.isSocket()}`); console.log(`Is character device: ${stats.isCharacterDevice()}`); console.log(`Is block device: ${stats.isBlockDevice()}`); }); 

注意使用同步API时:

当使用同步forms时,立即抛出任何exception。 你可以使用try / catch来处理exception或者让它们冒泡。

 try{ fs.lstatSync("/some/path").isDirectory() }catch(e){ // Handle error if(e.code == 'ENOENT'){ //no such file or directory //do something }else { //do something else } }