Сборка C# WinSCP .NET Загрузите последний файл из последнего каталога

Я новичок в WinSCP. Я столкнулся с трудностями при создании динамического удаленного пути, потому что папка на моем FTP создается после root/data/20160222/00(hour)/00(minute)/test.json*

Этот путь также всегда содержит более одного файла.

SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Ftp,
    HostName = "192.168.1.100",
    UserName = "admin",  
    Password = "admin",      
};

string localPath = @"c:\\gatewayftp\\json";
// this path needs to take the latest date and the latest hour and minutes every day
string remotePath = "/data/20160228/2100/59" 

Теперь я установил фиксированный путь, борюсь за решение.


person NewUser    schedule 28.02.2016    source источник


Ответы (1)


Расширение примера сборки WinSCP .NET для загрузки самого последнего файла:

string remotePath = "/data";
// In each of three levels of hierarchy...
for (int i = 0; i < 3; i++)
{
    // ... pick the last file/directory alphabetically
    // (use .LastWriteTime instead of .Name to pick the latest file/directory by time)
    remotePath +=
        "/" + 
        session.ListDirectory(remotePath).Files
            .OrderByDescending(file => file.Name).First().Name;
}

См. также документацию для Session.ListDirectory.

person Martin Prikryl    schedule 28.02.2016
comment
я получаю сообщение об ошибке исключения в WinSCP.SessionRemoteException: Ошибка списка каталогов 'data/20160228/ ---> winSCP.SessionException: Не удалось получить список каталогов. Ошибка смены каталога - person NewUser; 01.03.2016
comment
Включите ведение журнала (Session.SessionLogPath) и прикрепите журнал к своему вопросу. - person Martin Prikryl; 01.03.2016
comment
Спасибо, Мартин. Проблема решена с помощью функции C# datetime. пожалуйста, закройте эту тему, спасибо. - person NewUser; 07.03.2016
comment
@NewUser Только вы можете закрыть тему. Приняв ответ (вы можете опубликовать свой собственный, если это необходимо). - person Martin Prikryl; 07.03.2016
comment
я пробовал несколько вариантов строкового пути, отправляемого на FTP для запроса последнего файла в каталоге: строка выглядит следующим образом: string remotePath = /data/ + TimeGet.ToString(yyyyMMdd) + / + TimeGet.ToString(HH00) + / + TimeGet.ToString(мм); надеюсь, что это поможет кому-то. - person NewUser; 07.03.2016