C++ 路径文件存在限制为 260 个字符

C++ PathFileExists limited to 260 chars

本文关键字:字符 路径 文件 存在 C++      更新时间:2023-10-16

根据MSDN,PathFileExists()函数仅支持文件路径<260

我想检查远程位置是否存在路径。现在从法律上讲,我可以创建一个名称为 256 个字母的文件,当我向其添加服务器名称时,总长度超过 260,因此PathFileExists()无法使用它。

我还有什么其他选项来检查文件是否存在?

由于所有 Shell 路径处理函数都限制为 MAX_PATH - 1 个字符,如果您需要支持更长的文件名,则必须改用 kernel32 函数。您的选择是:

  1. 查找第一个文件
  2. 创建文件
  3. 获取文件属性

虽然 FindFirstFile 相当简单,但如果函数不返回错误代码,则需要调用 FindClose。如果要查询网络上的文件,这将触发额外的网络往返。还会为 CreateFile 触发额外的网络往返,您必须清理调用 CloseHandle HANDLE。另外,它可能会给出错误的答案。

如果需要支持长度超过 MAX_PATH 个字符的文件名,则使用 GetFileAttributes 的其余选项是查询文件是否存在的建议方法。