2015-09-15 5 views
0

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

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

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

ответ

1

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

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


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

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

File.Move(transfer.FileName, destinationPath); 
+0

Спасибо. Мне следовало пойти с моей первой реакцией. Я отметил ваш ответ как ответ, потому что это привело меня к правильному пути. –

+0

Флаг 'remove' помог мне. – banging

0

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

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

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