在WP7和&amp ;;中以递归方式删除IsolatedStorage中的目录的简便方法8

时间:2013-08-24 19:31:17

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

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

正常情况如果我正在删除IsolatedStorage中有一些文件的目录,我会得到目录列表,然后使用foreach语句并检查每个文件是否有文件然后使用另一个{{1} }语句删除这些目录中的每个文件。

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

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

目前我所知道的唯一技术(使用3-5 files语句和许多foreach)几乎不是你所谓的效率。

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

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

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