我有以下几行代码:
protected void MoveFilesToInBound(string filePath, string fileName, DateTime? reportingRun)
{
var dateValue = reportingRun.Value.ToString("yyyyMMdd");
var file = fileName + "_" + dateValue + ".csv";
if (File.Exists(Path.Combine(filePath, file)))
{
File.Copy(file, InputFolder);
}
}
单步执行我的代码,我可以看到我的目标文件位于目标文件位置。但是,当它将我的文件复制到我的输入文件夹(这是正确的)时,它无法告诉我:Could not find file 'myFile_20170831.csv'
。
令我困惑的是,我不明白为什么会失败。如果文件不在那里,肯定它甚至不会到达它引发错误的File.Copy
行。
有人可以对此有所了解吗?我有双倍和三倍检查我的所有位置,他们确实匹配。我只是不明白为什么文件不能从我的第一个位置复制到第二个位置。
答案 0 :(得分:7)
嗯,你没有使用相同的路径......:
if (File.Exists(Path.Combine(filePath, file)))
{
File.Copy(file, InputFolder);
}
希望 Path.Combine(filePath, file)
与file
不同。你不是故意使用:
if (File.Exists(Path.Combine(filePath, file)))
{
File.Copy(Path.Combine(filePath, file), InputFolder);
}
我说“希望”因为,如果file
是完整路径(“C:\ ..”),Path.Combine
将返回file
而不是组合。
此外,为了获得一些性能,您应该使用:
string filePath = Path.Combine(filePath, file);
if (File.Exists(filePath))
{
File.Copy(filePath, InputFolder);
}
答案 1 :(得分:2)
您正在检查是否存在Path.Combine(filePath, file)
,然后您尝试复制file
(不带路径)。尝试:
string fileWithPAth = Path.Combine(filePath, file);
if (File.Exists(fileWithPAth))
{
File.Copy(fileWithPAth , InputFolder);
}