Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

251
Visualizações
Encuentre el archivo SFTP más reciente con un nombre de archivo particular usando SSH.NET

Tengo una carpeta en un servidor SFTP que tiene un montón de archivos. Hay 6 archivos diferentes y se crean cada 60 minutos. Cada uno con una marca de fecha y hora, y se mantienen durante 3 días.

 FilesCodes_Critical.2022-03-17_11-16-22-614.json FilesCodes_Critical.2022-03-17_12-12-16-818.json FilesCodes_Critical.2022-03-17_13-11-43-025.json TransactionAudit.2022-03-14_11-16-23-530.json TransactionAudit.2022-03-14_12-12-19-764.json TransactionAudit.2022-03-14_13-11-45-454.json

Estoy creando algunos procesos que se ejecutarán cada hora y seleccionarán un archivo en particular y lo procesarán. Sé que puedo usar Name.StartsWith para obtener el archivo correcto, pero no sé cómo obtener el más reciente. Estaba pensando que se podría usar LastWriteTime , pero no sé cómo compararlo.

 fileNamePat = "FileCodes_Critical"; try { sftpc.Connect(); var files = sftpc.ListDirectory(sFTPPath); foreach (SftpFile file in files) { if (file.Name.StartsWith(fileNamePat)) { string jsonData = sftpc.ReadAllText(file.FullName); DataSet ds = JsonConvert.DeserializeObject<DataSet>(jsonData); } } } catch (Exception ex) { Console.WriteLine(ex.Message); }

Pensé en probar algo como esto para comparar y poner el archivo final en targetFile

 if (file.Name.StartsWith(fileNamePat)) { if (file.LastWriteTime > targetFile.LastWriteTime) { targetFile = file; } }

Pero no puedo averiguar dónde/cómo crear el SftpFile targetFile para que la comparación funcione. SftpFile targetFile = new(); y pensé que podría verificar si estaba en blanco y luego configurarlo, pero eso no funciona.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Intente usar una lambda en su conjunto de archivos:

 foreach (SftpFile file in files.Where(f => f.Name.Contains(fileNamePat)) .OrderByDescending(o => o.LastWriteTime) .Take(1)) { [...] }

En realidad no necesitabas un para cada uno. puede obtener su 'objetivo' de lambda:

 SftpFile targetFile = files.Where(f => f.Name.Contains(fileNamePat)) .OrderByDescending(o => o.LastWriteTime) .FirstOrDefault();
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda