gpt4 book ai didi

c# - 如何缩短 C# 中的路径并保持其有效

转载 作者:可可西里 更新时间:2023-11-01 10:32:42 31 4
gpt4 key购买 nike

我在一个地方工作,那里的目录名称如此之长,而且位于如此之长的树中。

而且我在外部应用程序中遇到文件夹路径名太长的问题(我无法更改此外部应用程序,但我可以给它缩短路径名)。

我知道 Microsoft 操作系统可以缩短路径名称,例如将 C:\TooLongName\TooLongSubDirectory 转换为 C:\TooLon~1\TooLon~1

但我怎样才能在 C# 中执行此操作并仍然保持中殿有效和可用?

PS:我没有使用标准的 FileInfoDirectoryInfo 类,我只使用将发送到我无法更改的外部应用程序的字符串反正。

最佳答案

如果您无法使用 Windows 10 内置的长路径支持,您可以使用 Win32 命令 GetShortPathName .为了生成合适的路径。

class Program
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern uint GetShortPathName(
[MarshalAs(UnmanagedType.LPTStr)]
string lpszLongPath,
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder lpszShortPath,
uint cchBuffer);

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern uint GetShortPathName(string lpszLongPath, char[] lpszShortPath, int cchBuffer);

static void Main(string[] args)
{
StringBuilder builder = new StringBuilder(260);
var shortPath = GetShortPathName(@"C:\Projects\Databases\ReallllllllllllllyLOOOOOOOOOOOOOOOOOOOOOONGPATHHHHHHHHHHH\StillllllllllllllllllGOoooooooooooooooooooooooing", builder, (uint)builder.Capacity);
Console.WriteLine(builder.ToString());
Console.ReadKey();
}
}

生成 C:\Projects\DATABA~1\REALLL~1\STILLL~1

关于c# - 如何缩短 C# 中的路径并保持其有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549888/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com