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