我有一個控制檯應用程序,我爲自己構建了用於重命名我下載的.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();
}
我嘗試改變路徑以使/
而不是\\
具有相同的結果。
當一個文件或目錄的一部分,無法 被發現時引發的異常。
然而,目錄是發現和正確地重新命名爲第一3個文件(作爲第一圖像中描繪的)。
任何人都可以向我解釋爲什麼會發生這種情況嗎?
此表達式的打印值'item.FullName.Replace(item.Name.Substring(0,3),newName)'。 – PetSerAl
可能是文件夾名稱太長了?在相同的文件上嘗試更短的路徑,看看是否會產生相同的錯誤。 – Chase
這是獲取文件的常見問題。它搜索子文件夾,並會在發生任何異常時中止。要繼續搜索,您需要有一個異常處理程序,該異常處理程序將在異常後繼續搜索。正確做到這一點的唯一方法是具有遞歸功能。 – jdweng