我有以下几行代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
单步执行我的代码,我可以看到我的目标文件位于我的目标文件位置.但是,当它将我的文件复制到我的输入文件夹(这是正确的)时,它无法告诉我:Could not find file 'myFile_20170831.csv'.
令我困惑的是,我不明白为什么会失败.如果文件不在那里,肯定它甚至不会到达File.Copy它抛出错误的行.
有人可以对此有所了解吗?我有双倍和三倍检查我的所有位置,他们确实匹配.我只是不明白为什么文件没有从我的第一个位置复制到第二个位置.
好吧,你没有使用相同的路径...:
if (File.Exists(Path.Combine(filePath, file)))
{
File.Copy(file, InputFolder);
}
Run Code Online (Sandbox Code Playgroud)
Path.Combine(filePath, file)希望是不一样的file.你不是故意使用:
if (File.Exists(Path.Combine(filePath, file)))
{
File.Copy(Path.Combine(filePath, file), InputFolder);
}
Run Code Online (Sandbox Code Playgroud)
我说"希望"因为,如果file是完整路径("C:\ .."),Path.Combine将返回file而不是组合.
此外,为了获得一些性能,您应该使用:
string filePath = Path.Combine(filePath, file);
if (File.Exists(filePath))
{
File.Copy(filePath, InputFolder);
}
Run Code Online (Sandbox Code Playgroud)