Extraer nombres de archivo de WebRequestMethods.Ftp.ListDirectoryDetails

Tengo una aplicación que hace lo siguiente: listado de directorio, descargar archivo, descargar todo.

Tengo un problema para obtener los nombres de archivo de WebRequestMethods.Ftp.ListDirectoryDetails. Parece que no es posible hacerlo para cada escenario.

WebRequestMethods.Ftp.ListDirectoryDetails devuelve un lineItem de la siguiente manera:

"-rw-r - r-- 1 ftp ftp 39979 01 de agosto 16:02 db a pc 2014-08-05 07-30-00.csv"

Estoy usando el primer carácter para determinar si es un archivo o directorio. Luego divido el archivo en el espacio y obtengo el nombre del archivo después de una cantidad fija de índice dentro de la división. El problema en mi implementación es que si un archivo tiene múltiples espacios, se referenciaría incorrectamente con menos espacios y el archivo no se encontraría al intentar descargarlo.

No puedo usar split.last () ya que un nombre de archivo puede tener espacios ni WebRequestMethods.Ftp.ListDirectory ya que no nos permite distinguir entre un Directorio y un archivo sin una extensión. Ni una expresión regular ya que un nombre de archivo puede tener una fecha. Cualquier ayuda para encontrar una solución que cubra completamente todos los casos sería excelente.

bool isDirectory = line.Substring(0,1).Equals("d", System.StringComparison.OrdinalIgnoreCase);

string[] itemNames = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries).Select((value, index) => new { value, index }).Where(i => i.index > 7).Select(i => i.value).ToArray();
string val = string.Join(" ", itemNames);

Respuestas a la pregunta(3)

Su respuesta a la pregunta