У меня есть консольное приложение, которое я создал для себя, чтобы переименовать .mp3
загружаемых файлов. Это приложение работает безупречно в течение нескольких месяцев, но внезапно бросает на меня озаглавленное исключение с одним конкретным каталогом. Мало того, что это один каталог, но происходит только на выбранном количестве файлов - 3 из них были успешно переименованы.DirectoryNotFoundException - Не удалось найти часть пути
Вот мой путь к директории и файлы:
Вот фрагмент пути каталога, где выбрасывается исключение, наряду с сообщением, за исключением в:
И вот мой код:
static void Main(string[] args) {
string dir = @"M:\Temp Downloading Folder";
var files = new DirectoryInfo(dir + @"\Gregory Alan Isakov Discography [2005 - 2013]\Rust Colored Stones").GetFiles("*.mp3").ToList();
foreach (var item in files) {
if (item.Name.Substring(0, 2).All(char.IsDigit)) {
//string fullName = item.FullName.Replace("\\", "/");
string newName = "Gregory Alan Isakov ";
//exception thrown here
File.Move(item.FullName, item.FullName.Replace(item.Name.Substring(0, 3), newName));
}
}
Console.WriteLine("Done!");
Console.ReadKey();
}
Я попытался изменить путь, чтобы иметь /
вместо \\
с тем же результатом.
Согласно Documentation on MSDN:
Исключение, которое выбрасывается, когда часть файла или каталога не может быть найден.
Однако, каталог является найден и правильно переименован первым 3 файла (как показано на первом изображении).
Может ли кто-нибудь объяснить мне, почему это происходит?
Распечатать значение этого выражения 'item.FullName.Replace (item.Name.Substring (0, 3), newName)'. – PetSerAl
Может быть, имя папки слишком длинное? Попробуйте более короткий путь по тем же файлам и посмотрите, не вызывает ли такая ошибка. – Chase
Это обычная проблема с получением файлов. Он выполняет поиск вложенных папок и прерывается при возникновении любого исключения. Чтобы продолжить поиск, вам понадобится обработчик исключений, который продолжит поиск после исключения. единственный способ сделать это правильно - иметь рекурсивную функцию. – jdweng