Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

252
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda