在IsolatedStorage中,您必须先删除目录中的所有文件夹和文件,然后才能删除IsolatedStorage中的目录。
正常情况如果我正在删除IsolatedStorage中有一些文件的目录,我会得到目录列表,然后使用foreach
语句并检查每个文件是否有文件然后使用另一个{{1} }语句删除这些目录中的每个文件。
但是我在foreach
中有一个更复杂的文件系统,看起来有点像这样:
IsolatedStorage
包含Several Main directories
这些Several sub-directories
包含另一个sub-directories
,其中包含大约1-100 additional sub-directories
目前我所知道的唯一技术(使用3-5 files
语句和许多foreach
)几乎不是你所谓的效率。
是否有更容易/更简单的方法来检查递归删除目录及其文件?
答案 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();
}
请记住,这会删除所有内容,甚至是配置