Когда я рекурсивно просматриваю некоторые папки и файлы, я сталкиваюсь с этой ошибкой:
Указанный путь, имя файла или оба они слишком длинные.Полное имя файла должно быть не более 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, и он отлично работал!Он даже просматривал папки, для которых требовался доступ.
EDIT Вместо zetalongPath я использовал Delimon.Win32.IO.dll, который, на мой взгляд, намного лучше.Он имеет те же интерфейсы, что и Win32.