我有一个项目作为计划任务运行,每5分钟。除此之外,该项目通过数百个图像运行,并以这种方式将它们复制到网络驱动器中。File.Copy()性能如果文件可能已经存在
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());
}
}
“假”的说法当然告诉它不覆盖文件,如果它已经存在。
这是比第一次检查文件是否已经存在,然后只在文件不存在时才复制更快/更好的做法吗? (见下)
foreach (string file in Files)
{
if (File.Exists(destinationFolder + "\\" + ControlNumber + ".pdf") == false)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Copy(file, destinationFolder + "\\" + ControlNumber + @".pdf");
}
}
我的直觉告诉我,第一个是更好的方法。不过,我对编程相对比较陌生,并且很想知道哪个更好,更快,更广泛地被接受等等。
谢谢!
编辑: 它可能会或可能不会让你知道,远程驱动器/文件夹,我复制到包含图像数据(百万计的图像)的4TB
http://ericlippert.com/2012/12/17/performance-rant/ –
如果将所有现有文件的路径写入文本或xml文件中,然后检查是否更好首先列出,如果它不在该列表中,则复制到目录中,然后将新文件添加到列表中?只是一个想法:) –
你是如何创建'文件'集合? –