我需要让我的 delphi 应用程序能够检查使用 Robocopy 复制的文件在其路径超过 255 个字符时是否存在。我已经尝试过通常的“If FileExists(MyFile) then ...”,但即使文件在那里,它也总是返回“false”。
我也尝试获取文件的日期,但我得到了 1899/12/30,这可以被视为一个空日期。
文件搜索也不返回任何内容。
为文件名加上前缀\\?\
以启用扩展长度的路径解析。例如你会写
if FileExists('\\?\'+FileName) then
....
请注意,这仅在您调用 Win32 API 函数的 Unicode 版本时才有效。因此,如果您使用 Unicode Delphi,那么这将完成这项工作。否则,您将不得不推出您自己的FileExists
调用 API 函数的 Unicode 版本的版本。
这些问题在 MSDN 上进行了详细讨论:命名文件、路径和命名空间。