WinSCP上传后用c#移动文件

本文关键字:移动 文件 WinSCP | 更新日期: 2023-09-27 18:12:54

我正在创建一个SFTP上传程序。它工作得很好,它连接到远程SFTP服务器并按预期上传文件。我有它的问题,我想要的文件一旦上传移动到本地服务器上的新目录。我已经搜索了WinSCP网站和谷歌搜索,但我写的代码不工作。以下是我的文件:

foreach (TransferEventArgs transfer in transferResult.Transfers)
{
    Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
    session.MoveFile(transfer.FileName, Local_Processed);
}

在日志中,它表示正在移动文件,但文件仍在原始文件夹中,并且在已处理的文件夹中没有出现任何内容。

WinSCP上传后用c#移动文件

Session.MoveFile用于将远程文件移动到另一个远程目录或重命名远程文件。它不是用于将远程文件移动到本地目录。

将远程文件移动到本地目录,使用Session.GetFilesremove参数。


虽然对我来说,它看起来像你实际上想要移动一个原始的本地文件(上载)到另一个本地目录。所以它实际上和WinSCP没有任何关系。

移动本地文件,使用File.Move:

File.Move(transfer.FileName, destinationPath);

以下是Martin Prikryl发布后的结果。我最终不得不添加第二个foreach后,我的第一个用来移动文件。我还发现原来的原始目录调用中的*.*必须被忽略,因为这也会导致问题。

我最终在我的app.config文件中创建了第二个变量。它具有与原始目录变量完全相同的路径,只是文件名没有*.*

foreach (var file in Directory.GetFiles(OrgPath))
{
    File.Move(file, Path.Combine(Processed, Path.GetFileName(file)));
}