我似乎无法获得任何解释如何执行此操作的搜索结果 .
我想要做的就是能够知道给定路径是文件还是目录(文件夹) .
说真的,问题存在五年,没有好看的外观?
function is_dir(path) { try { var stat = fs.lstatSync(path); return stat.isDirectory(); } catch (e) { // lstatSync throws an error if path doesn't exist return false; } }
我们可以使用新的fs.promises API
实验此功能仍在积极开发中,并且在将来的任何版本中都会受到非向后兼容的更改甚至删除 . 建议不要在 生产环境 环境中使用该功能 . 实验功能不受Node.js语义版本控制模型的约束 .
const fs = require('fs').promises; (async() => { try { const stat = await fs.lstat('test.txt'); console.log(stat.isFile()); } catch(err) { console.error(err); } })();
以下是检测路径是文件还是目录 asynchronously 的方法,这是节点中推荐的方法 . 使用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时请注意:
使用同步表单时,会立即抛出任何异常 . 您可以使用try / catch来处理异常或允许它们冒泡 .
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 } }
fs.lstatSync(path_string).isDirectory() 应该告诉你 . 来自docs:
fs.lstatSync(path_string).isDirectory()
从fs.stat()和fs.lstat()返回的对象属于此类型 . stats.isFile()stats.isDirectory()stats.isBlockDevice()stats.isCharacterDevice()stats.isSymbolicLink()(仅对fs.lstat()有效)stats.isFIFO()stats.isSocket()
3 回答
说真的,问题存在五年,没有好看的外观?
更新:Node.Js> = 10
我们可以使用新的fs.promises API
任何Node.Js版本
以下是检测路径是文件还是目录 asynchronously 的方法,这是节点中推荐的方法 . 使用fs.lstat
使用同步API时请注意:
fs.lstatSync(path_string).isDirectory()
应该告诉你 . 来自docs: