这是之前问题的升级版:https://segmentfault.com/q/1010000044101528
最后发现报错的是chokidar
chokidar.watch(dirPath, {
persistent: true, // 保护进程不退出持久监听,默认值为true
// 完全无效
ignored: ["**/node_modules/**", "**/.git/**", "**/pagefile.sys"], // 忽略文件
// ignored: path => ["node_modules", ".git", "pagefile.sys"].some(s => path.includes(s)),
cwd: ".", // 表示当前目录
depth: 0, // 只监听当前目录不包括子目录
})
报错信息:
[Window Title]
Error
[Main Instruction]
A JavaScript error occurred in the main process
[Content]
Uncaught Exception:
Error: EBUSY: resource busy or locked, lstat 'c:\pagefile.sys'
[确定]
我要做一个类似资源管理器的列表,所以排除某文件的方式是最后的无奈之举
所以会有监听磁盘根目录的需求,但不少文件是被占用的,比如pagefile.sys,这是系统的分页文件,我们不能对它做任何处理。
我需要得到的文件信息有:
- 文件名
- 后缀
- 大小
- 创建时间
- 修改时间
大小、时间不要求实时,都是排序用的
但如上所述,会报EBUSY错误。
fs.statSync也会报此类错误。
我不关心文件内容,请问有解决方法吗?
不要求用chokidar,欢迎推荐更好用的库。
用正则:
或者用绝对路径;