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