[英]Removing a directory with files inside AppData
好吧,我要做的是刪除位於漫游內的文件夾。 我希望此功能適用於每個用戶,因此每台PC的用戶名都不同。 我已經知道要獲取AppData的路徑,需要執行以下操作:
var path = Environment.SpecialFolder.ApplicationData;
但是,如何刪除具有特定名稱的文件夾(我們將其命名為ExampleDir)呢? 我嘗試了這個:
Path.Combine(path + "Kappa");
Directory.Delete(true.ToString());
但這是行不通的。 我還是C#的初學者,我仍然想練習。 將非常感謝您的幫助=)
首先, Path.Combine()
用於替換字符串串聯,因此請勿在其中串聯字符串。 將要連接的每個名稱作為參數傳遞,然后函數將完成其余工作。
其次,要刪除包含文件的文件夾,您必須使用Directory.Delete(string, bool)
重載。 bool
值(稱為recursive
)指示您是否要刪除指定目錄中的文件和子文件夾(請參閱MSDN文檔Directory.Delete() ) 。
最后, Environment.SpecialFolder.ApplicationData
只是一個枚舉(意味着它只是一個數字)。 您必須將其作為參數傳遞給Environment.GetFolderPath()
方法,以獲取AppData文件夾的實際路徑。
例:
string AppDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string FolderToDelete = Path.Combine(AppDataFolder, "Kappa");
try
{
Directory.Delete(FolderToDelete, true); //Setting "recursive" to true will remove every subfile/-folder.
}
catch (Exception ex)
{
//An error occurred, use this block to log it/show it to the user/whatever.
//ex.Message - The error message.
//ex.StackTrace - Where in the code the error occurred.
}
編輯:
正如@ dman2306在他的評論中所說,在刪除失敗的情況下,某些異常處理是一種好習慣。 我已經將此添加到我的上面的代碼中。
try
塊中的代碼將一直運行,直到引發異常(如果有)。 如果引發異常,則執行將繼續到catch
塊,在這里您可以捕獲異常並執行例如錯誤日志記錄,停止其他過程等。
編輯2:
您可能必須在 Path.Combine()
添加“漫游”。我不確定它是否已經包含在內,現在無法測試。
string FolderToDelete = Path.Combine(AppDataFolder, "Roaming", "Kappa");
忘了我說的話 , SpecialFolder.ApplicationData
會為您提供Roaming
文件夾的路徑。
Path.Combine()
錯誤。 但是您根本不需要。 Directory.Delete()
希望將要刪除的文件夾的路徑作為參數。 嘗試這個:
Directory.Delete(Environment.SpecialFolder.ApplicationData + "\\Kappa");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.