我有一个超过260个字符的路径,并尝试使用FileInfo从此路径中检索文件中的文件信息。但我得到了PathTooLongException
。我用以下代码缩短了它:
if (longName.Length >= 247)
{
longName = @"\\?\" + longName;
}
StringBuilder shortPath = new StringBuilder(300);
GetShortPathName(longName, shortPath, shortPath.Capacity);
return shortPath.ToString();
现在我的路径只有139个字符,但我仍然从FileInfo获得PathTooLongException
。有谁知道为什么?
缩短路径只是一个占位符,就像长路径的连接一样,而FileInfo正在使用长路径吗?
编辑:执行发生在这里:
string fileName = ToShortPathName(_path);
fileName = fileName.Replace(@"\\?\", "");
fileInformations.FileName = fileName;
fileInformations.FullPath = _path;
=> fileInformations.FileLastChanged = File.GetLastWriteTime(fileName);
EDIT2:错误位置的fileName是:
D:\\06PROJ~1\\1094IH~1\\FACHBE~1\\IT\\Azubi\\KH\\PROJEK~1\\VISUAL~1\\USB_BA~1\\packages\\NUNIT3~1.0\\lib\\PORTAB~1.IOS\\NUNITF~1.DLL