js判断文件夹是否存在
JS里压根没有“文件夹”这个概念,判断只有文件系统API。文件但浏览器端和Node.js环境完全是夹否两码事,别混着说。判断 先看Node.js。文件你写服务端脚本,夹否想确认某个目录存不存在,判断最直接的文件办法是用 但这里有个坑—— 注意那个 再说浏览器端。网页JS出于安全考虑,根本碰不到本地文件系统。以前有 倒是有个 我自己踩过坑。以前做过一个Electron应用,想在渲染进程里判断用户数据目录是否存在,直接写了 所以总结一下实际经验:判断文件夹是否存在,先分清楚你跑在哪个环境。Node.js后端用 最后补一句,Node.js官方文档其实推荐用 但这又牵扯到权限检测——只检查“存在”而不检查“可读写”,有时候会漏掉真实问题。反正记住一条:文件系统操作永远要把错误处理当主线,别把“存在性检查”当终点。fs.existsSync()。这玩意儿同步阻塞,夹否但胜在简单粗暴。判断代码就一行:const fs = require('fs'); if (fs.existsSync('./uploads')) { console.log('目录在'); } else { console.log('目录没了'); } existsSync不光能查目录,文件文件、夹否符号链接、判断socket啥的文件都算“存在”。你要是夹否想严格确认“这是个目录”而不是同名文件,还得加个statSync判断。比如这样:const fs = require('fs'); try { const stats = fs.statSync('./uploads'); if (stats.isDirectory()) { console.log('确认是文件夹'); } else { console.log('存在,但不是文件夹'); } } catch (err) { if (err.code === 'ENOENT') { console.log('路径不存在'); } else { console.log('其他错误,比如权限不足'); } } try/catch。别用existsSync然后直接访问,因为文件系统操作天生带竞态条件——你刚检查完存在,下一秒可能就被删了。真要严谨,直接用access或open操作,让错误处理接管业务逻辑。ActiveXObject那种老掉牙的东西,现在早废了。现代浏览器只给你FileReader和FileSystem API,而且这些API只能读取用户主动选择的文件或拖拽进来的文件。你想判断“某个固定路径的文件夹是否存在”?没门,浏览器压根不给你路径。showDirectoryPicker(),用户点一下按钮,弹出系统对话框选个文件夹,然后你就能拿到一个FileSystemDirectoryHandle对象。但这跟“判断文件夹是否存在”是两码事——它只处理用户当前选中的目录,不存在“检查系统里C盘有没有某个文件夹”这种操作。fs.existsSync,结果报错——因为渲染进程默认没有Node环境。后来才意识到,Electron里得用IPC调主进程的Node API,或者开nodeIntegration: true(但这有安全风险,不推荐)。fs模块,注意区分文件与目录;浏览器前端根本做不到,只能借助用户交互API;Electron这种混合体得走IPC桥接。别信那些“一行代码搞定”的教程,他们只演示了理想情况,没告诉你异常处理和权限边界。fs.promises.access替代existsSync,因为前者更规范,还支持异步非阻塞。写法是这样:const { access, constants } = require('fs/promises'); async function checkDir(path) { try { await access(path, constants.R_OK | constants.W_OK); return true; } catch { return false; } }
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-