递归删除WP8中的文件和文件夹时出现异常
Exception while recursively deleting files and folders in WP8
我正在尝试从独立存储中删除一个文件夹,其中递归地包含文件和文件夹。我正在使用 Whosebug 和其他博客上其他人建议的一段代码。代码如下:
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: Unable to delete,
directory not empty or does not exist.
请帮忙找出代码中的任何错误,导致它失败?还是我遗漏了什么?
改变
deleteSubApp(directory + @"/" + subDirectory);
至
deleteSubApp(pappname + @"/" + subDirectory);
否则你在递归调用中传入类似 "apps/pappname/subdirectory" 的东西,它会将 directory
设置为 "apps/apps/pappname/subdirectory",这是不存在的。
我正在尝试从独立存储中删除一个文件夹,其中递归地包含文件和文件夹。我正在使用 Whosebug 和其他博客上其他人建议的一段代码。代码如下:
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: Unable to delete, directory not empty or does not exist.
请帮忙找出代码中的任何错误,导致它失败?还是我遗漏了什么?
改变
deleteSubApp(directory + @"/" + subDirectory);
至
deleteSubApp(pappname + @"/" + subDirectory);
否则你在递归调用中传入类似 "apps/pappname/subdirectory" 的东西,它会将 directory
设置为 "apps/apps/pappname/subdirectory",这是不存在的。