递归删除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",这是不存在的。