在WP8中递归删除文件和文件夹时出现异常

时间:2015-04-09 13:19:18

标签: c# windows-phone-8 recursion isolatedstorage

我正在尝试从隔离存储中删除一个文件夹,其中包含递归的文件和文件夹。我正在使用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:无法删除,   目录不为空或不存在。

请帮助查找代码中的任何错误,因为它失败了?或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

更改

deleteSubApp(directory + @"/" + subDirectory);

deleteSubApp(pappname + @"/" + subDirectory);

否则你会传递类似" apps / pappname / subdirectory"在递归调用上,它会将directory设置为" apps / apps / pappname / subdirectory"哪个不存在。