pathfileexists函数用于判断文件或文件夹路径是否存在,返回true表示存在、false表示不存在,但仅验证路径有效性,不区分文件与目录,且对非法字符、权限不足或远程驱动器服务异常等情况均返回false。

Windows下用PathIsRelative和PathFileExists容易误判
直接调用Windows API判断路径有效性,常掉进“语法合法但语义无效”的坑里。PathIsRelative只看开头有没有盘符或\,PathFileExists则依赖实际文件系统——路径含非法字符(如、<code>|、?)时可能根本走不到这一步,API直接失败或返回假阴性。
- 真正要验的是“能否作为参数传给
CreateFile或stat而不崩溃”,不是“是否存在” - 优先检查字符级合法性:剔除
|?*、末尾空格/点、控制字符 - 对UNC路径(
\servershare)需额外验证前导双反斜杠 - 驱动器路径(
C:)要确认盘符后紧跟:和分隔符
Linux/macOS下stat不是万能解法
stat能告诉你路径是否对应真实文件,但无法提前拦截/proc/self/fd/9999999这种语法合法却必然失败的路径,更没法识别../..//../../../etc/passwd这类超长相对跳转——它只在真正访问时才报错。
- 先做静态检查:禁止

