更改
File.Copy(file, dist, true);
要
File.Copy(file, dist, false);
如果您在MSDN
public static void Copy(string sourceFileName, string destFileName, bool overwrite)
參數
sourceFileName類型已經看過:系統。字符串要複製的文件。
destFileName類型:System.String目標文件的名稱。
這不能是一個目錄。
覆蓋類型:System.Boolean如果可覆蓋目標文件 ,則爲true;否則,是錯誤的。
而且在不斷變化的目標文件名,並試圖複製,直到成功的方式添加異常處理
更新1 你可以嘗試使用類似的代碼上面。這對我來說似乎比您提供的鏈接更短。我沒有對任何可能的情況進行過測試,但對於存在「tmp - copy.txt」和「tmp - copy(1).txt」等簡單情況下複製「tmp.txt」,這是行得通的。
UPDATE 2呀抱歉,有使用。選擇和僅比.Count之間我有固定它
string sourcePath = @"c:\Users\Admin\Desktop\tmp\test1\";
string destinationPath = @"c:\Users\Admin\Desktop\tmp\test2\";
string[] files = Directory.GetFiles(sourcePath);
foreach (string file in files)
{
string fname = file.Substring(sourcePath.Length);
string dest = Path.Combine(destinationPath, fname);
if (File.Exists(dest))
{
var existingFiles = Directory.GetFiles(destinationPath);
var fileNum = existingFiles.Count(x => x.Substring(destinationPath.Length).StartsWith(Path.GetFileNameWithoutExtension(fname)));
dest = Path.Combine(destinationPath, Path.GetFileNameWithoutExtension(dest) + " copy" + (fileNum > 1 ? " (" + (fileNum - 1) + ")" : "") + Path.GetExtension(dest));
File.Copy(file, dest);
}
else
{
File.Copy(file, dest);
}
}
重複相同的文件夾,以相同的目標文件夾的副本的結果後的5倍是一個小錯誤如下:
但是這會通過'file already exists'異常! – FSm
@FSm對不起,忘了添加有關添加處理 –
@FSM如果你不知道該怎麼辦我可以寫代碼 –