C#如何在不更改原始文件名的情况下复制文件

时间:2013-09-19 09:44:01

标签: c# file-copying

我有这段代码:

var GetDLLFilesForDir = Directory.GetFiles(directory, "*.dll", SearchOption.AllDirectories).Where(s => s.EndsWith(".dll"));
foreach (string DLLFilesForDir in GetDLLFilesForDir)
{
    File.Copy(DLLFilesForDir, Path.Combine(SADIR, DLLFilesForDir), true);
}

但正如你所看到的,当我去复制它时,我得到一个错误。 我知道错误是由“DLLFilesForDir”引起的,因为当我已经在使用该文件时,它正在尝试使用“DLLFilesForDir”组合路径。

问题是,我需要文件名保持不变,所以如果我改变了:

Path.Combine(SADIR, DLLFilesForDir);

对此:

Path.Combine(SADIR, DLLFilesForDir + "1");

它会更改正在复制的文件的名称,因为那时我会有一个“filename1.dll”而不是“filename.dll”,我需要后者。

帮助表示感谢,谢谢。

1 个答案:

答案 0 :(得分:2)

更改您的

File.Copy(DLLFilesForDir, Path.Combine(SADIR, DLLFilesForDir), true);

File.Copy(DLLFilesForDir, Path.Combine(SADIR, Path.GetFileName(DLLFilesForDir)), true);


来自MSDN page for Path.Combine()

  

如果path2包含绝对路径,则此方法返回path2。

所以你正在尝试将文件复制到自己^^