删除目录中的所有文件时出现问题,然后是目录本身

时间:2013-07-23 15:05:19

标签: c# windows-phone-7 directory isolatedstorage

我正在尝试删除目录&当我点击ContextMenu的MenuItem时,它的所有内容。但是我似乎遇到了问题,因为文件/目录没有被删除。

但是我没有遇到任何错误,它似乎没有用。

到目前为止,这是我的代码:

private void gridSessionDelete_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    var item = (((sender as MenuItem).Parent as ContextMenu).Owner as Grid);
    var title = (TextBlock)item.FindName("Title");
    string directory = title.Text;

    var appStorage = IsolatedStorageFile.GetUserStoreForApplication();

    string[] fileList = appStorage.GetFileNames(directory + "\\*");

    foreach (string file in fileList) 
    { 
        appStorage.DeleteFile(directory + "\\" + file); 
    }

    appStorage.DeleteDirectory(directory);

    bindList();
}

有没有人对我做错了什么有任何帮助?

感谢所有帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

好吧,我可以看到几个错误可能的地方。

首先,这一行:

var item = (((sender as MenuItem).Parent as ContextMenu).Owner as Grid);

如您所知,当您使用 as 关键字转换类型时,结果可能为null,并且不会抛出任何异常。

其次,IMO最重要的是:

这一行:

string[] fileList = appStorage.GetFileNames(directory + "\\*");

那找不到任何东西。你应该在搜索请求中使用“”(星点星)代替“*”(星号)。

此外,当您使用IsolatedStorage时,请使用使用关键字,例如:

 using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
              // your code
            }

答案 1 :(得分:0)

代码是否实际执行?断点会受到打击吗?如果是这样,这里是用于删除目录中所有文件的代码。它对我有用。我看到的主要区别在于DeleteFile方法。

var storage = IsolatedStorageFile.GetUserStoreForApplication();
if (storage.DirectoryExists(directoryName))
{
    foreach (var oldFile in storage.GetFileNames(string.Concat(directoryName, "\\*")))
    {
        storage.DeleteFile(Path.Combine(directoryName, oldFile));
    }
}