File.Copy()如果​​文件可能已存在则性能

Mil*_*lne 5 c# performance file-io copy file

我有一个项目,每5分钟作为一个计划任务运行.除此之外,该项目还运行数百个图像,并以这种方式将它们复制到网络驱动器中.

foreach (string file in Files)
{
    string Control = Path.GetFileNameWithoutExtension(file);
        File.SetAttributes(file, FileAttributes.Normal);
        try
        {
            File.Copy(file, destinationFolder + "\\" + Control + @".pdf", false);
        }
        catch (Exception err)
        {
            Console.Writeline(err.ToString());
        }
}
Run Code Online (Sandbox Code Playgroud)

"false"参数当然告诉它不要覆盖文件,如果它已经存在的话.

这比首先检查文件是否已经存在更快/更好的做法,然后只在文件不存在时才复制?(见下文)

foreach (string file in Files)
{
    if (File.Exists(destinationFolder + "\\" + ControlNumber + ".pdf") == false)
    {
        File.SetAttributes(file, FileAttributes.Normal);
        File.Copy(file, destinationFolder + "\\" + ControlNumber + @".pdf");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我,第一种是更好的方式.但是,我对编程比较陌生,并且想知道哪个更好,更快,更广泛接受等等.

谢谢!

编辑:知道我复制的远程驱动器/文件夹包含4TB的图像数据(数百万图像)可能有用也可能没有帮助

Ben*_*ker 5

在本地驱动器上测试了此结果,结果如下:

检查文件是否存在1000次,File.Copy如果不存在则执行a :28.29毫秒

File.Copy在a try, catch:317.13毫秒内将覆盖设置为false的1000次

在网络驱动器上测试,结果如下:

1000次检查文件是否存在,然后执行a,File.Copy如果不存在:203.48毫秒

File.Copy在a try, catch:14758.74毫秒内将覆盖设置为false的1000次

基于此,我认为首先进行文件检查显然会更有效率.