【问题标题】:Easy Way to Recursively Delete Directories in IsolatedStorage on WP7 & 8在 WP7 和 8 上的独立存储中递归删除目录的简单方法
【发布时间】:2013-08-27 15:44:56
【问题描述】:

在IsolatedStorage中,您必须先删除目录中的所有文件夹和文件,然后才能在IsolatedStorage中删除目录本身。

通常,如果我要删除 IsolatedStorage 中包含一些文件的目录,我会获取目录列表,然后使用 foreach 语句并检查其中是否每个都有文件,然后使用另一个 foreach 语句删除这些目录中的每个文件。

但是我在IsolatedStorage 中有一个更复杂的文件系统,看起来有点像这样:

Several Main directories 其中包含Several sub-directories 这些sub-directories 包含另一个1-100 additional sub-directories,其中包含大约3-5 files

目前我所知道的唯一技术(使用foreach 语句和许多IsolatedStorageFile.GetUserStoreForApplication().GetDirectoryNames())几乎不是你所说的高效。

是否有更简单的方法来检查递归删除目录及其文件?

【问题讨论】:

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


    【解决方案1】:

    用户存储有一个清除整个事物的方法 Clear()

    using (var userStore = IsolatedStorageFile.GetUserStoreForApplication())
    {
        userStore.Clear();
    }
    

    请记住,这会删除所有内容,甚至是配置

    【讨论】:

    • 是的,我知道,我希望能够删除具有多个子目录的特定目录,这些子目录包含更多目录和更多文件
    • 那么递归就是......而且你已经拥有它了,不是吗?
    • IsolateStorageFile 没有 Clear() 方法,它有一个 Remove() 方法。哪个做同样的事情。
    【解决方案2】:

    由于 API 不支持递归删除,所以你必须自己做。比如说

    public static void DeleteDirectoryRecursively(this IsolatedStorageFile storageFile, String dirName)
    {
        String pattern = dirName + @"\*";
        String[] files = storageFile.GetFileNames(pattern);
        foreach (var fName in files)
        {
            storageFile.DeleteFile(Path.Combine(dirName, fName));
        }
        String[] dirs = storageFile.GetDirectoryNames(pattern);
        foreach (var dName in dirs)
        {
            DeleteDirectoryRecursively(storageFile, Path.Combine(dirName, dName));
        }
        storageFile.DeleteDirectory(dirName);
    }
    

    【讨论】:

    • 我之前也是这样用的,但是还是解决不了删除目录里面目录的问题?
    • @user2696648 嗯……是的。它通过在找到的子目录上调用 DeleteDirectoryRecursively 递归删除它们。
    • 谢谢,我在参数中设置了String dirName = "",因为我想删除所有内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多