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

3

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

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

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

如果当前移动的文件已经存在于目标路径中,则不会移动。因此,我想要重命名该文件并将其移动。

有没有办法做到这一点?

1个回答

4
如果您想知道WinSCP是否可以自动完成此操作,答案是“不可以”。在移动文件之前,您需要明确检查目标文件的存在并将其重命名。
请注意,从WinSCP .NET Assembly API的角度来看,重命名和移动是相同的操作。因此,您可以同时使用Session.MoveFile方法
根据您的问题,无法确定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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接