DIRECTORY.GETFILESYSTEMINFOS (سلسلة) إرجاع الملفات غير المطابقة

StackOverflow https://stackoverflow.com/questions/1369220

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أستخدم الأمر المتابعة للحصول على قائمة من ملفات fileysteminfo

IList<FileSystemInfo> requestFiles = 
                new List<FileSystemInfo>(
                    _RequestDirectory.GetFileSystemInfos(GetSearchPatern())); 

الحصول على نمط البحث إرجاع "*.exr". لا تزال القائمة تتضمن الملفات التي تنتهي بـ ".EXR2" ، ولكنها لا تتضمن تلك التي تنتهي بـ ".exr.bak". هل هذه الوظيفة المتوقعة؟ هل يجب أن أتحقق يدويًا من الملفات التي تم إرجاعها؟ لقد لاحظت أن هذه هي نفس النتيجة التي أحصل عليها من أمر DIR في سطر الأوامر.

هل كانت مفيدة؟

المحلول

من MSDN:

عند استخدام حرف العلامة النجمية في SearchPattern ، مثل "".txt "، يختلف السلوك المطابق عندما يكون الامتداد ثلاثة أحرف تمامًا عندما يكون الامتداد أكثر أو أقل من ثلاثة أحرف. ، حيث تتطابق الأحرف الثلاثة الأولى مع امتداد الملف المحدد في SearchPattern. A SearchPattern مع امتداد ملف لواحد أو اثنين أو أكثر من ثلاثة أحرف يرجع الملفات التي لها امتدادات بالضبط هذا الطول الذي يتطابق مع امتداد الملف المحدد في SearchPattern. عند استخدام حرف Question Mark Wildcard ، تقوم هذه الطريقة بإرجاع الملفات التي تتطابق مع ملحق الملف المحدد. على سبيل المثال ، بالنظر إلى ملفين ، "file1.txt" و "file1.txtother" ، في دليل ، نمط بحث عن ملف "؟ .txt "إرجاع الملف الأول فقط ، في حين أن نمط بحث" ملف ".txt "إرجاع كلا الملف.

سحبت من هنا http://msdn.microsoft.com/en-us/library/wz42302f.aspx

السبب في أن .exr.bak لا يتطابق مع "*.exr" هو أن التمديد مصمم على أنه مجموعة من الشخصيات بعد الأخير ". (أو حرف فاصل تمديد الملف) ، لذلك لا يتطابق .exr .bak.

نصائح أخرى

هذا ناتج عن أسماء قصيرة التي يتم إنشاؤها تلقائيا للملفات. في أسماء قصيرة ، يكون التمديد دائمًا آخر بعد ". ولديه 3 أحرف على الأكثر. تعني أن الاسم القصير لـ "example.ext2" سينتهي بـ ".ext" والاسم القصير لـ "example.ext.bak" سينتهي بـ ".bak".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top