使用C#

时间:2015-09-15 15:21:36

标签: c# winscp winscp-net file-move

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

File.Move(transfer.FileName, destinationPath);

答案 1 :(得分:0)

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

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

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