猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
同步检查Node.js中是否存在文件/目录
如何同步检查,使用
Node.js
文件或目录是否存在?
繁星点点滴滴
浏览 2788
回答 3
3回答
MM们
你可以用fs.existsSync():const fs = require("fs"); // Or `import fs from "fs";` with ESMif (fs.existsSync(path)) { // Do something}它被废弃了好几年,但现在不再是了。从医生那里:请注意fs.exists()是反对的,但是fs.existsSync()不是。(回调参数为fs.exists()接受与其他Node.js回调不一致的参数。fs.existsSync()不使用回调。)你特别要求同步检查,但如果您可以使用异步用I/O代替检查(通常最好用I/O),使用fs.promises.access如果你用async职能或fs.access(自exists不受欢迎)如果没有:在async职能:try { await fs.promises.access("somefile"); // The check succeeded} catch (error) { // The check failed}或者是回调:fs.access("somefile", error => { if (!error) { // The check succeeded } else { // The check failed }});
0
0
0
白板的微信
从源代码来看,有一个同步版本的path.exists - path.existsSync..好像是在医生那里漏掉的。最新情况:path.exists和path.existsSync现在弃用. fs.exists和fs.existsSync也有不受欢迎..使用fs.stat()或fs.access()相反。
0
0
0
桃花长相依
使用当前推荐的API(截至2015年)(根据节点文档),我所做的工作如下:var fs = require('fs');function fileExists(filePath){ try { return fs.statSync(filePath).isFile(); } catch (err) { return false; }}作为对EPERM问题的回应,@宽频在评论中提出了一个很好的观点。在许多情况下,fileExist()可能不是考虑这个问题的好方法,因为fileExist()不能真正保证布尔返回。您可以确定文件是否存在,但也可能会出现权限错误。权限错误并不一定意味着文件存在,因为您可能对包含正在检查的文件的目录缺乏权限。当然,在检查文件是否存在时可能会遇到其他错误。所以我上面的代码确实是do FileExistAndDoIHaveAccessToit(),但是您的问题可能是do FileNotExistAndCouldICreateit(),这将是完全不同的逻辑(这需要考虑EPERM错误,等等)。虽然fs.352 sSync的答案直接回答了这里提出的问题,但这往往不是您想要的问题(您不只是想知道路径上是否存在“某事”,您可能关心的是存在的“东西”是文件还是目录)。底线是,如果您正在检查某个文件是否存在,您可能会这样做,因为您打算根据结果采取一些操作,并且这种逻辑(检查和/或后续操作)应该适应这样的想法,即在该路径上找到的东西可能是文件或目录,并且在检查过程中可能会遇到EPERM或其他错误。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Node.js
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续