File.Exists返回true但复制找到的文件失败

N0x*_*xus -2 c#

我有以下几行代码:

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它抛出错误的行.

有人可以对此有所了解吗?我有双倍和三倍检查我的所有位置,他们确实匹配.我只是不明白为什么文件没有从我的第一个位置复制到第二个位置.

SO *_*ood 7

好吧,你没有使用相同的路径...:

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)