Подробная информация о файле анализа для Windows FTP -сервера
-
19-09-2019 - |
Вопрос
Я пытаюсь подключиться к FTP -серверу через код C#, и я получаю список файлов и каталогов. И что я сохраняю в ArrayList (со всеми атрибутами). Я могу найти тип FTP -сервера через команду SYS FTP. У меня есть регулярное выражение для файлов на основе UNIX, чтобы разобрать атрибуты файла Directory. Но у меня нет выражения для файлов файлов Server Windows FTP. Мне нужна помощь в этом ..
04-30-09 10:40AM <DIR> Acrobat
12-08-09 10:36PM 9058 AuthCheck.zip
12-06-09 12:49PM 174 desktop.ini
11-09-09 03:33PM <DIR> FailedPDF
Мне нужно проанализировать это. Дата, время, dir file, имя файла
Пожалуйста помоги. Спасибо.
Решение
Я не знаю много о C#, но если вам просто нужна корпорация, попробуйте это:
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$
$ 1 = Дата, 2 долл. США = время, $ 3 = AM или PM, 4 долл. США = тип (может быть null), $ 5 = размер (NULL, если DIR), $ 6 = имя
или IFF $ 4 - это только или пустые
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$
Я полагаю, что "<" и ">" не являются особыми частями на C#
Другие советы
^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$
Группы захвата: 0: DateTime 1: IS DIR 2: FileSize (или NULL для каталога) 3: Имя
У меня нет под рукой компилятора, поэтому я не могу проверить это, но он должен быть достаточно близко, чтобы начать.
Похоже, линии имеют фиксированную структуру. Так что вы могли бы просто сделать это:
Date fileDate;
bool isDir;
int fileSize;
string fileName;
fileDate=line.Substring(0,18).ParseExact("MM-dd-yy hh-sstt");
isDir=line.Substring(24,5)=="DIR";
if (!isDir)
{
fileSize=int.Parse(line.Substring(29,10).Trim());
}
fileName=line.Substring(39);