我有这段代码:
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”,我需要后者。
帮助表示感谢,谢谢。
答案 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。
所以你正在尝试将文件复制到自己^^