繁体   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