我正在尝试从隔离存储中删除一个文件夹,其中包含递归的文件和文件夹。我正在使用Stackoverflow和其他博客上其他人建议的一段代码。代码如下:
private void deleteSubApp(string pappname)
{
try
{
string directory = "apps/" + pappname;
IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
if (iso.DirectoryExists(directory))
{
string[] files = iso.GetFileNames(directory + @"/*");
foreach (string file in files)
{
try
{
iso.DeleteFile(directory + @"/" + file);
}
}
string[] subDirectories = iso.GetDirectoryNames(directory + @"/*");
foreach (string subDirectory in subDirectories)
{
try
{
deleteSubApp(directory + @"/" + subDirectory);
}
}
iso.DeleteDirectory(directory);
}
}
}
由于Windows Phone 8不允许内置函数删除文件夹,除非它是空的,因此以递归方式删除它,因为上述代码仍然是唯一选项。但是当我运行代码时,我得到一个例外:
System.IO.IsolatedStorage.IsolatedStorageException:无法删除, 目录不为空或不存在。
请帮助查找代码中的任何错误,因为它失败了?或者我错过了什么?
答案 0 :(得分:1)
更改
deleteSubApp(directory + @"/" + subDirectory);
要
deleteSubApp(pappname + @"/" + subDirectory);
否则你会传递类似" apps / pappname / subdirectory"在递归调用上,它会将directory
设置为" apps / apps / pappname / subdirectory"哪个不存在。