C#报”PathTooLongException”的原因以及解决办法

  • Post category:C#

PathTooLongException是.NET中的一个异常类型,当文件或文件夹名长度超出系统最大值时,就会抛出这个异常。通常情况下,Windows操作系统对文件或文件夹名称长度的限制是260个字符,其中路径长度最大为248个字符,文件或文件夹名称长度不能超过12个字符。

针对这个问题,我们可以采取以下两种解决办法:

1. 使用缩短路径或合并路径

我们可以通过缩短路径名或者是合并路径来解决这个问题。具体操作如下:

  • 缩短路径名:通过缩短文件或文件夹名的长度来避免超出最大限制。例如,将文件名改为更短的名称,可以减少文件名长度,解决异常问题。
  • 合并路径:通过简化路径名称的深度来避免异常。例如,将某一级路径的名字更改为更短的名字,可以减少路径深度,解决异常问题。

下面是一些示例代码,展示了如何使用缩短路径名来解决这个问题:

try
{
    // 修改文件名
    string newPath = Path.Combine(directoryPath, "fileName.txt");
    File.Move(filePath, newPath);
    Console.WriteLine("文件重命名成功!");
}
catch (PathTooLongException ex)
{
    // 缩短文件名
    string fileName = Path.GetFileNameWithoutExtension(filePath);
    fileName = fileName.Substring(0, Math.Min(8, fileName.Length));
    string newFileName = fileName + ".txt";
    string newPath = Path.Combine(directoryPath, newFileName);
    File.Move(filePath, newPath);
    Console.WriteLine("文件重命名成功!");
}

在上面的代码中,当文件名长度超过8个字符时,我们会将文件名缩短至8个字符,以避免超出最大长度限制。

2. Windows10系统中修改注册表路径名长度限制

在Windows 10系统中,您也可以通过手动更改注册表来增加对路径名长度的限制。具体操作如下:

  • 打开注册表编辑器(regedit.exe)。
  • 导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem键下。
  • 右键单击FileSystem,然后单击新建>DWORD (32位) Value。输入LongPathsEnabled并按Enter。
  • 右键单击LongPathsEnabled,然后单击修改。
  • 在值数据文本框中输入1,然后单击“确定”。
  • 重新启动计算机以使更改生效。

请注意,在更改注册表之前,务必备份注册表,并小心操作,以避免不必要的麻烦和损失。

总之,PathTooLongException的解决方法有很多种,根据具体情况选择适当的方法即可。需要注意的是,在实际操作中,我们应该时刻关注文件名和路径名的长度,以避免超出限制。