我需要创建路径超过MAX_PATH限制的文件。我期望工作的是缩短现有的目录名称,如下所示:
public static String GetShortPathName(String longPath)
{
StringBuilder shortPath = new StringBuilder(longPath.Length + 1);
if (0 == GetShortPathName(longPath, shortPath, shortPath.Capacity))
{
throw new Exception("Path shortenning failed");
}
return shortPath.ToString();
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern Int32 GetShortPathName(String path, StringBuilder shortPath, Int32 shortPathLength);
然后使用结果创建新文件,如:
using (FileStream writeStream = File.Create(shortPath + newFile))
...
但它仍像以前一样抛出PathTooLongException。知道为什么吗?
我知道我可以使用Delimon Lib或其他lib,但我无法弄清楚它为什么不起作用。
非常感谢。