هل هناك طريقة سهلة لتحديد نوع ملف دون معرفة ملف التمديد ؟

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

سؤال

لدي جدول مع عمود ثنائي الذي يخزن الملفات من عدد من مختلف ممكن نوع الملف (PDF, BMP, JPEG, WAV, MP3, DOC, MPEG, AVI الخ) ، ولكن لا الأعمدة التي تخزن إما اسم أو نوع الملف الأصلي.هل هناك أي طريقة سهلة لمعالجة هذه الصفوف وتحديد نوع كل ملف المخزنة في الثنائية عمود ؟ ويفضل أن تكون أداة فقط يقرأ الملف headers, بحيث لا يكون كاملا استخراج كل الملفات لتحديد نوعها.

التوضيح:أنا أعرف أن هذا النهج هنا ينطوي على القراءة فقط بداية كل ملف.أنا أبحث عن مورد جيد (الملقب الروابط) التي يمكن أن تفعل هذا معي دون الكثير من العناء.شكرا

أيضا ، فقط C#/.صافي على ويندوز ، يرجى.أنا لا أستخدم لينكس لا يمكن استخدام Cygwin (لا يعمل على Windows CE ، من بين أسباب أخرى).

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

المحلول

يمكنك استخدام هذه الأدوات للعثور على تنسيق الملف.

الملف محلل http://www.softpedia.com/get/Programming/Other-Programming-Files/File-Analyzer.shtml

ما شكل http://www.jozy.nl/whatfmt.html

PE file format محلل http://peid.has.it/

هذا الموقع قد يكون مفيدا بالنسبة لك.http://mark0.net/onlinetrid.aspx

ملاحظة:ولقد تضمنت روابط التحميل للتأكد من أن كنت تحصل على الأداة المناسبة الاسم والمعلومات.

يرجى التحقق من المصدر قبل تحميلها.

لقد استخدمت أداة في الماضي كنت أعتقد أنه هو الملف محلل ، والتي سوف اقول لكم أقرب المباراة.

سعيد الأدوات.

نصائح أخرى

هذه ليست إجابة كاملة ، ولكن مكان لبدء سيكون "الأرقام السحرية" المكتبة.هذا ويبحث القليلة الأولى بايت من الملف لتحديد "الرقم السحري" الذي هو مقارنة المعروف قائمة من لهم.هذا هو (على الأقل جزئيا) كيف file الأمر على أنظمة لينكس يعمل.

شخص آخر سؤالا مماثلا ونشرت مدونة اعتادت أن تفعل هذا بالضبط.يجب أن تكون قادرا على اتخاذ ما نشر هنا قليلا تعديله بحيث تسحب من قاعدة البيانات الخاصة بك.

https://stackoverflow.com/questions/58510

بالإضافة إلى ذلك, يبدو أن أحدهم قد كتب المكتبة على الخروج من الأرقام السحرية للقيام بذلك ، ومع ذلك ، يبدو أن الموقع يتطلب التسجيل و بعض أشكال بديلة من أجل الوصول إلى تحميل هذا lirbary.الوثائق متوافرة مجانا بدون تسجيل, التي قد تكون مفيدة.

http://software.topcoder.com/catalog/c_component.jsp?comp=13249160&ver=2

أسهل طريقة هي استخدام الملف الأمر الذي هو أيضا متاح في ويندوز مع Cygwin .

الكثير من نوع الملف يكون تعريف الرؤوس التي تبدأ الملف.هل يمكن أن تحقق بايت القليلة الأولى إلى التحقق من أن نرى كيف يبدأ الملف.

أسهل طريقة للقيام بذلك سيكون من خلال الوصول إلى *nix (أو cygwin) النظام الذي يحتوي على ملف الأوامر:

$ file visitors.*
visitors.html: HTML document text
visitors.png:  PNG image data, 5360 x 2819, 8-bit colormap, non-interlaced

هل يمكن كتابة C# التطبيق الذي الأنابيب أول بايت X كل عمود ثنائي إلى ملف الأوامر (باستخدام - كما اسم الملف)

تحتاج إلى استخدام بعض p/استدعاء interop رمز الاتصال SHGetFileInfo طريقة من Win32 API.هذا المادة قد يساعد أيضا.

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