尝试删除隔离存储中的目录时出现异常

Mo *_*our 1 c# silverlight isolatedstorage windows-phone-7

当我尝试删除Windows Phone 7中的隔离存储中的目录时,出现以下异常:

访问IsolatedStorage时发生错误.
没有内在的例外.

using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
    isf.DeleteDirectory(dir.TrimEnd('/'));
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 将它放在try-catch中会隐藏异常但仍然不删除目录!
  2. 在调用它之前,我使用DeleteFile()删除其中的所有文件,因此问题无法与目录中的现有文件相关.
  3. 修剪目录名称是为了确保它是有效的目录名称.

任何的想法?

谢谢.

Mo *_*our 6

好的,问题解决了,问题是文件没有被正确删除.我感到困惑的原因是,当您删除无效文件时,IsolatedStorageFile类不会警告您.这是正确的代码和一些注意事项:

public static void DeleteDirectoryRecursive(this IsolatedStorageFile isf, string dir)
{
    foreach (var file in isf.GetFileNames(dir))
    {
        isf.DeleteFile(dir + file);
    }

    foreach (var subdir in isf.GetDirectoryNames(dir))
    {
        isf.DeleteDirectoryRecursive(dir + subdir + "\\");
    }

    isf.DeleteDirectory(dir.TrimEnd('\\'));
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 文件路径中的'\'和'/'之间没有区别
  2. 当DeleteDirectory抛出异常"path必须是有效文件名"时,需要trimEnd().
  3. GetFileNames()和GetDirectoryNames()仅返回名称部分而不是完整路径.所以为了使用每个结果,你需要将它与目录结合起来(在这个例子中是DeleteFile())