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

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

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

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

目前,我所知道的唯一技术(使用foreach语句和许多IsolatedStorageFile.GetUserStoreForApplication().GetDirectoryNames())几乎没有什么可以称为有效的。

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

最佳答案

由于该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);
}

10-07 13:03
查看更多