我正在使用WinSCP .NET程序集(C#)开发SFTP文件传输项目。
我想在服务器中移动文件。这是代码:
session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);
Console.WriteLine("Move File {0} to {1}", fileInfo.Name, server.DoneFilePath);
如果当前移动文件存在于目标路径中,则它不会移动。所以我想重命名文件并移动它。
有没有办法做到这一点?
答案 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);