我需要让我的Delphi应用程序能够检查使用Robocopy复制的文件是否存在,当文件路径超过255个字符时。 我已经尝试了通常的"If FileExists(MyFile) then ...",但它总是返回"false",即使文件存在。
我还尝试获取文件的日期,但我得到的是1899/12/30,可以认为这是一个空日期。
文件搜索也没有返回任何结果。
在文件名前面添加\\?\
以启用扩展长度路径解析。例如,你可以写成:
\\?\C:\very-long-path\file-name.ext
if FileExists('\\?\'+FileName) then
....
请注意,这只能在调用Win32 API函数的Unicode版本时才有效。 因此,如果您使用Unicode Delphi,则可以完成此操作。 否则,您将不得不编写自己的FileExists
版本,以调用API函数的Unicode版本。
\\?\
前缀,你就已经超越了260个字符的限制。 - David Heffernan