代码之家  ›  专栏  ›  技术社区  ›  user2696648

在WP7和8上递归删除隔离存储中目录的简单方法

  •  1
  • user2696648  · 技术社区  · 11 年前

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

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

    然而,我有一个更复杂的文件系统 IsolatedStorage 看起来有点像这样:

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

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

    有没有一种更容易/更简单的方法来检查递归删除目录及其文件?

    2 回复  |  直到 11 年前
        1
  •  4
  •   Alex    11 年前

    由于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);
    }
    
        2
  •  0
  •   Gonzix    11 年前

    用户存储有一个方法Clear(),它可以清理整个东西

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

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