我有这个代码:
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”,而我需要后者。
感谢帮助,谢谢。
最佳答案
改变你的
File.Copy(DLLFilesForDir, Path.Combine(SADIR, DLLFilesForDir), true);
至
File.Copy(DLLFilesForDir, Path.Combine(SADIR, Path.GetFileName(DLLFilesForDir)), true);
来自 MSDN page for Path.Combine() :
If path2 contains an absolute path, this method returns path2.
所以您正在尝试将文件复制到自身 ^^
关于C# 如何在不改变原文件名的情况下复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18891332/