缩短的路径仍然抛出PathTooLongException

时间:2016-04-06 21:21:18

标签: c# winapi exception io

我需要创建路径超过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,但我无法弄清楚它为什么不起作用。

非常感谢。

0 个答案:

没有答案