3

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

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

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

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

有没有办法做到这一点?

4

1 回答 1

4

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

您需要在移动文件之前明确检查目标文件是否存在并重命名。

请注意,从 WinSCP .NET 程序集 API 的角度来看,重命名和移动是相同的操作。因此,您对两者都使用该Session.MoveFile方法

从您的问题来看,尚不清楚server.DoneFilePath是目标目录的路径(以 slash 结尾/)还是目标文件的路径(以文件名结尾)。假设它只是目标目录的路径:

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);
于 2014-01-23T08:31:52.873 回答