Extrahieren von Dateinamen aus WebRequestMethods.Ftp.ListDirectoryDetails

Ich habe eine Anwendung, die Folgendes ausführt: Verzeichnisliste, Datei herunterladen, alles herunterladen.

Ich habe ein Problem beim Abrufen der Dateinamen von WebRequestMethods.Ftp.ListDirectoryDetails. Es scheint, dass dies nicht für jedes Szenario möglich ist.

WebRequestMethods.Ftp.ListDirectoryDetails gibt ein lineItem auf folgende Weise zurück:

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

Ich verwende das erste Zeichen, um festzustellen, ob es sich um eine Datei oder ein Verzeichnis handelt. Dann teile ich die Datei nach Speicherplatz auf und erhalte den Dateinamen nach einem festen Indexbetrag innerhalb der Aufteilung. Das Problem bei meiner Implementierung ist, dass eine Datei mit mehreren Leerzeichen fälschlicherweise mit weniger Leerzeichen referenziert wird und die Datei beim Versuch, sie herunterzuladen, nicht gefunden wird.

Ich kann split.last () nicht verwenden, da ein Dateiname Leerzeichen oder WebRequestMethods.Ftp.ListDirectory enthalten kann, da wir dadurch nicht zwischen einem Verzeichnis und einer Datei ohne Erweiterung unterscheiden können. Auch ein regulärer Ausdruck, da ein Dateiname ein Datum enthalten kann. Jede Hilfe bei der Suche nach einer Lösung, die alle Fälle vollständig abdeckt, wäre großartig.

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage