我需要将一些文件复制到目录中,但有时该目录不存在,必须先创建。大多数情况下,该目录将存在,因为它只需创建一次。
我知道我可以将 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/