当目标文件存在时,如何使用WinSCP .NET程序集移动/重命名文件?

时间:2014-01-23 05:44:07

标签: c# winscp winscp-net

我正在使用WinSCP .NET程序集(C#)开发SFTP文件传输项目。

我想在服务器中移动文件。这是代码:

session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);
Console.WriteLine("Move File {0} to {1}", fileInfo.Name, server.DoneFilePath);

如果当前移动文件存在于目标路径中,则它不会移动。所以我想重命名文件并移动它。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

如果您问,如果WinSCP可以自动为您执行此操作,则答案为“否”。

您需要显式检查目标文件是否存在,并在移动文件之前重命名它。

请注意,重命名和移动与WinSCP .NET Assembly API透视图中的操作相同。因此,您可以使用Session.MoveFile method

根据您的问题,不清楚server.DoneFilePath是否是目标目录的路径(以斜杠/结尾)或目标文件的路径(以文件名结尾)。假设它只是目标目录的路径:

string doneFile = server.DoneFilePath + fileInfo.Name;
if (session.FileExists(doneFile))
{
    session.MoveFile(doneFile, doneFile  + ".bak");
}

// carry on with your move code:
session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);