تحليل تفاصيل الملف ل Windows FTP Server
-
19-09-2019 - |
سؤال
أحاول الاتصال بخادم FTP من خلال رمز C # وأحصل على قائمة الملفات والدلائل. وهذا أحفظ في قائمة صفيف (مع كل سمات). يمكنني العثور على نوع خادم FTP من خلال أمر SYS FTP. لدي تعبير منتظم لملفات UNIX المستندة إلى تحليل سمات الملف الدلائل. ولكن ليس لدي تعبير عن تحليل ملفات خادم 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 ملف، اسم الملف
الرجاء المساعدة. شكرًا.
المحلول
أنا لا أعرف الكثير عن C #، ولكن إذا كنت بحاجة فقط إلى Regex جرب هذا واحد:
^(\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 = النوع (قد يكون فارغا)، $ 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: هو Dir 2: filesize (أو null for directory) 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);