簡體   English   中英

在AppData中刪除包含文件的目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM