WinSCP Переместить файл после загрузки с C#

Я создаю программу загрузки SFTP. Он отлично работает, он подключается к удаленному серверу SFTP и загружает файлы, как задумано. У меня проблема, я хочу, чтобы файлы после загрузки были перемещены в новый каталог на локальном сервере. Я искал сайт WinSCP и сделал поиск Google, но код, который я с ним не работает. Вот что у меня есть:

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

В журнале говорится, что он перемещает файлы, но файлы остаются в исходной папке, а в обработанной папке ничего не появляется.

2 ответа

Решение

Session.MoveFile предназначен для перемещения удаленного файла в другой удаленный каталог или для переименования удаленного файла. Это не для перемещения удаленного файла в локальный каталог.

Чтобы переместить удаленный файл в локальный каталог, используйте remove параметр Session.GetFiles,


Хотя для меня это выглядит так, как будто вы действительно хотите переместить оригинальный локальный файл (который был загружен) в другой локальный каталог. Так что это на самом деле не имеет ничего общего с WinSCP.

Чтобы переместить локальный файл, используйте File.Move:

File.Move(transfer.FileName, destinationPath);

Вот что получилось после публикации Мартина Прикрыла. В итоге мне пришлось добавить секунду foreach после того, как мой первый переместил файлы. Я также обнаружил, что *.* в моем первоначальном исходном каталоге вызов должен был быть пропущен, поскольку это также вызывало проблемы.

Я закончил создание второй переменной в моем app.config файл. Он имел тот же путь, что и исходная переменная каталога, за исключением того, что не имел *.* для имени файла.

foreach (var file in Directory.GetFiles(OrgPath))
{
    File.Move(file, Path.Combine(Processed, Path.GetFileName(file)));
}
Другие вопросы по тегам