在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()
)几乎没有什么可以称为有效的。
有没有更简便的方法来检查是否递归删除目录及其文件?
最佳答案
由于该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);
}