代码之家  ›  专栏  ›  技术社区  ›  Henry C

使用IsolatedStorage,在创建目录之前是否需要检查它是否存在?

  •  4
  • Henry C  · 技术社区  · 15 年前

    我正在开发一个WindowsPhone7应用程序,我想知道是否有人对我在创建一个目录之前是否需要检查一个目录有明确的答案,以及这样做/不这样做的优点/缺点是什么。据我所知,通过单步执行我的代码,以下两个代码块以相同的方式工作:

            using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {                
                //ensure directory exists
                String sDirectory = System.IO.Path.GetDirectoryName(sPath);
                if (!appStorage.DirectoryExists(sDirectory))
                {
                    appStorage.CreateDirectory(sDirectory);
                }
            }
    

            using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {                
                //ensure directory exists
                String sDirectory = System.IO.Path.GetDirectoryName(sPath);
                appStorage.CreateDirectory(sDirectory);
    
            }
    

    使用第二块代码安全吗?如果目录已经存在,它似乎不会抛出异常,而且似乎也会保留目录的内容。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Steven    15 年前

    这个 IsolatedStorageFile.CreateDirectory 将呼叫 Directory.CreateDirectory documentation 属于

    如果目录已经存在,则 方法不起作用。

        2
  •  1
  •   Matt Lacey    15 年前

    我怀疑 CreateDirectrory DirectoryExists 明确地在手之前。

    确定测试的方法是通过创建大量目录来测试这两种方法的性能。(如果您尝试这样做,请注意,父目录中的目录不能超过16k个,并且目录深度不能超过18个(我认为)

    最好的做法是对你正在做的事情一目了然。我希望任何其他看过代码的开发人员在创建目录之前都会问您没有测试存在性。尤其是如果这个代码被多次调用。如果您在测试中发现性能没有差异,我建议在代码中添加注释来说明这一点。