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);
}

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


person James Studer    schedule 15.09.2015    source источник


Ответы (2)


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

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


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

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

File.Move(transfer.FileName, destinationPath);
person Martin Prikryl    schedule 16.09.2015
comment
Спасибо. Я должен был уйти со своей первой инстинктивной реакцией. Я пометил ваш ответ как ответ, потому что он указал мне правильный путь. - person James Studer; 16.09.2015
comment
Совет с флагом remove помог мне. - person banging; 19.03.2016

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

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

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