因此,我们有一个应用程序,用户不断丢失其工具栏,解决问题的唯一方法是删除该用户的appdata中的文件夹。所以我们写了一个简单的小程序,删除这个文件夹就是我们在try catch
System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.InternalCombine(String path1, String path2)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive)
at System.IO.Directory.Delete(String path, Boolean recursive)
at DeleteFolder.frnDeleteFolder.btnDelete_Click(Object sender, EventArgs e) in C:\Users\rmcintosh.K12.000\documents\visual studio 2010\Projects\DeleteFolder\DeleteFolder\frnDeleteFolder.cs:line 82
以下是我们用来删除的代码
string path = @"C:\Users\98532153\AppData\Roaming\DraftSight";
try
{
if (Directory.Exists(path)) {
Directory.Delete(path, true);
}
else
{
MessageBox.Show("Directory Does Not Exists");
}
}
catch (Exception ex)
{
richTextBox1.Text = ex.ToString();
}
我想指出,只要主目录为空,此工作就会找到,但只要我添加任何文件子目录,就会抛出此错误。
答案 0 :(得分:3)
C#字符串中的反斜杠是一个转义字符;你需要string path = @"C:\Whatever\Wherever";
- 注意'@' - 或者你需要string path = "C:\\Whatever\\Wherever";
- 注意双反斜杠。
您可以阅读有关string literals on MSDN的更多信息。
答案 1 :(得分:0)
看起来内部的一些子目录可能在其名称中包含一些无效字符。不知何故.NET没有处理它。唯一的方法是编写自己的例程,递归检查路径并删除它们。
答案 2 :(得分:0)
如果你看一下VS中的Intellisense,它会告诉你该目录必须是空的。
调用Directory.GetFiles并清除它们然后删除目录。
如果你需要我可以帮助你用递归方法来做到这一点。