当我通过一些文件夹和文件递归时,我遇到了这个错误:
指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。
这是我的功能
private void ProcessDirectory(DirectoryInfo di)
{
try
{
DirectoryInfo[] diArr = di.GetDirectories();
foreach (DirectoryInfo directoryInfo in diArr)
{
if (StopCheck)
return;
ProcessDirectory(directoryInfo);
}
ProcessFile(di);
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
TextBoxCurrentFolder.Text = di.ToString();
}
我不能缩短目录名称,因为我也不允许这样做......我该如何解决这个问题?
补充: 这是另一个功能:
private void ProcessFile(DirectoryInfo di)
{
try
{
FileInfo[] fileInfo = di.GetFiles();
if (fileInfo.LongLength != 0)
{
foreach (FileInfo info in fileInfo)
{
Size += info.Length;
CountFile++;
}
}
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
}
编辑 在他使用 Zeta Long Paths 的地方找到了这个: 如何使用 FileInfo 类,避免 PathTooLongException?
已经实现了它,现在我要让程序运行一整夜,看看它是否有效。
编辑 昨天使用了 ZetaLongPath,效果很好!它甚至通过需要权限访问的文件夹。
编辑 而不是zetalongPath,我使用了我认为更好的Delimon.Win32.IO.dll。它具有与 Win32 相同的接口。