Обзор
Как скопировать все файлы из одного каталога в другой каталог и перезаписать все существующие файлы с одинаковым именем в целевом каталоге с помощью С#?
У меня есть следующий код для копирования файлов из одного каталога в другой каталог...
const string sourceDir = @"C:\AppProject\Smart\SmartStaff\site\document";
const string targetDir = @"C:\AppProject\Smart\ExternalSmartStaff\site\document";
foreach (var file in Directory.GetFiles(sourceDir))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
..., но когда целевой каталог уже содержит файл с тем же именем, что и файл в исходном каталоге, он не работает с ошибкой System.IO.IOException: The file 'C:\AppProject\Smart\ExternalSmartStaff\site\document\SomeDocument.txt' already exists.
.
Подробнее
Чтобы быть ясным, учитывая следующие каталоги и файлы в них...
C:\>dir C:\AppProject\Smart\SmartStaff\site\document
...
Directory of C:\AppProject\Smart\SmartStaff\site\document
09/03/2014 06:38 PM <DIR> .
09/03/2014 06:38 PM <DIR> ..
05/25/2014 08:29 PM 44 SomeDocument.txt
05/25/2014 08:32 PM 21 SomeDocument2.txt
05/25/2014 08:36 PM 21 SomeDocument3.txt
05/25/2014 08:43 PM 44 SomeDocument4.txt
4 File(s) 130 bytes
2 Dir(s) 128,326,766,592 bytes free
C:\>dir C:\AppProject\Smart\ExternalSmartStaff\site\document
...
Directory of C:\AppProject\Smart\ExternalSmartStaff\site\document
09/03/2014 06:39 PM <DIR> .
09/03/2014 06:39 PM <DIR> ..
09/03/2014 06:39 PM 26 SomeDocument.txt
09/03/2014 06:39 PM 54 SomeDocument2.txt
2 File(s) 80 bytes
2 Dir(s) 128,326,766,592 bytes free
... Я хотел бы, чтобы C:\AppProject\Smart\ExternalSmartStaff\site\document
выглядел так после копирования файла в С#:
C:\>dir C:\AppProject\Smart\ExternalSmartStaff\site\document
...
Directory of C:\AppProject\Smart\ExternalSmartStaff\site\document
09/03/2014 06:47 PM <DIR> .
09/03/2014 06:47 PM <DIR> ..
05/25/2014 08:29 PM 44 SomeDocument.txt
05/25/2014 08:32 PM 21 SomeDocument2.txt
05/25/2014 08:36 PM 21 SomeDocument3.txt
05/25/2014 08:43 PM 44 SomeDocument4.txt
4 File(s) 130 bytes
2 Dir(s) 128,327,835,648 bytes free
Как я могу избежать IOException
и выполнить это?