It takes about 2 minutes to do a File.Copy(src, dest);
for a 1.6GB File from Folder A to Folder B on the same drive. Is there a faster way to do this in C#/.NET in code (w/o hardware) – Something with stream, threading etc?
Would a filestream be quicker? How about a class that chunks up the file using a threadpool, and reads a range of bytes/writes a range of bytes [that sounds like a great way to corrupt the file, but integrity is not priority 1 here, its speed :-)]
I have searched but everyone says use File.Copy, but it's slow (as slow as Windows Copy) – I would prefer not to use a 3rd party tool.
Here are some answers to some of the questions:
Copy time comparison:
> C# : 2.15m
> Windows Explorer: 2.53m
> TeraCopy: 2.26m
> FastCopy: 2.24m
Ok, those are not averages and I know they may change slightly on subsequent runs, but I really thought there would be a faster way to copy a file since I assumed that Windows was doing additional security and integrity checks 🙁
I'm still hoping for some good answer (like 'oh yea, files over 1.5GB will be x faster if you do buffer m and turn off security n') — ok, I'm just wishing at this point.
Best Answer
If you are interested in creating a symbolic or hardlink instead of an actual copy then the following Windows APIs might be helpful.