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的图像数据(数百万图像)可能有用也可能没有帮助
在本地驱动器上测试了此结果,结果如下:
检查文件是否存在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次
基于此,我认为首先进行文件检查显然会更有效率.
| 归档时间: |
|
| 查看次数: |
3455 次 |
| 最近记录: |