c# Directory.CreateDirectory( path ),我应该先检查路径是否存在吗?

标签 c# file directory

我需要将一些文件复制到目录中,但有时该目录不存在,必须先创建。大多数情况下,该目录将存在,因为它只需创建一次。

我知道我可以将 Directory.CreateDirectory() 放在文件副本之前,如果目录已经存在,CreateDirectory() 就会返回。

string destFolder; // path to destination
string sourceFolder; // path to source
Directory.CreateDirectory( destFolder ); // this will work even if destFolder exists
File.Copy( sourceFolder + sourceFileName, destFolder + sourceFileName );

但我知道几乎在所有情况下目标文件夹都已经存在,所以首先检查它是否存在比调用 CreateDirectory() 更快。

if( !Directory.Exists( destFolder ) ) // check if it exists first
{
    Directory.CreateDirectory( destFolder );
}
// now move on to using the folder

我真的不在乎创建目录需要多长时间,因为用户只会创建一次。我对 Directory.Exists()if 语句是否比 Directory.CreateDirectory()< 所花费的时间更快更感兴趣 来确定该目录已经存在。

每次调用 Directory.CreateDirectory() 对我来说“感觉”很浪费,即使它可能存在,所以我“感觉更好”先检查一下,但无论如何它仍然是一个函数调用所以通过使用额外的 if 语句和 Directory.Exists() 检查来丑化我的代码,我真的获得了优势吗?

最佳答案

您可以查看 Directory 的代码Microsoft 引用源中的类。 Directory.CreateDirectory 做的第一件事是调用 Directory.Exists(或内部等效项,InternalExists)。所以使用这两种方法你可以这样写:

if (!Directory.Exists(dir))
{
    if (!Directory.Exists(dir))
    {
        Directory.CreateDirectory(dir);
    }
}

就我个人而言,我永远不会做 Exists 检查。

关于c# Directory.CreateDirectory( path ),我应该先检查路径是否存在吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27575384/

相关文章:

java - GetParts() 在 servlet 中返回 null

c - 搜索并打印目录的所有文件和子文件夹

创建目录并返回 dirfd 为 `open`

c++ - 在 C++ 中给定路径的文件列表

android - 如何显示来自 android gallery 上特定文件夹的图像

c# - 带下划线的 MVC 3 模型绑定(bind)

c# - 在 C# 中是否可以编译时访问行号?

c# - 对分区的 CosmosDB 集合的查询不一致

c# - 帮助编写文件夹结构的算法

java - 如何在java中创建一个exe文件