1

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

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

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

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

目前,我所知道的唯一技术(使用foreachstatements 和 many IsolatedStorageFile.GetUserStoreForApplication().GetDirectoryNames())几乎不是您所说的高效。

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

4

2 回答 2

4

由于 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);
}
于 2013-08-24T19:42:46.920 回答
0

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

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

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

于 2013-08-24T19:46:37.803 回答