C ++ PathFileExists限制为260个字符

时间:2012-12-14 11:39:51

标签: c++ winapi

根据MSDN PathFileExists()函数仅支持filepath< 260

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

我还有哪些其他选项可以检查是否存在文件?

1 个答案:

答案 0 :(得分:4)

由于所有Shell Path Handling Functions都限制为MAX_PATH - 1个字符,因此如果需要支持更长的文件名,则必须使用kernel32函数。您的选择是:

  1. FindFirstFile
  2. CreateFile
  3. GetFileAttributes
  4. 虽然FindFirstFile非常简单,但如果函数未返回错误代码,则需要调用FindClose。如果您要查询网络上的文件,则会触发额外的网络往返。还会为CreateFile触发额外的网络往返,您需要清除HANDLE来电CloseHandle。另外,它可能会提供wrong answer

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