0

我正在创建一个 SFTP 上传程序。它工作得很好,它连接到远程 SFTP 服务器并按预期上传文件。我遇到的问题我希望上传后的文件移动到本地服务器上的新目录。我搜索了 WinSCP 站点并进行了谷歌搜索,但我使用的代码不起作用。这是我所拥有的:

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

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

4

2 回答 2

1

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

要将远程文件移动到本地目录,请remove使用Session.GetFiles.


虽然对我来说,看起来您实际上想要将原始本地文件(已上传)移动到另一个本地目录。所以它实际上与WinSCP无关。

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

File.Move(transfer.FileName, destinationPath);
于 2015-09-16T06:10:56.830 回答
0

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

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

foreach (var file in Directory.GetFiles(OrgPath))
{
    File.Move(file, Path.Combine(Processed, Path.GetFileName(file)));
}
于 2015-09-16T13:07:32.160 回答