2010-11-14 9 views
5

मैं अगर मेरी फाइल ऑडियो फ़ाइल है पता करने की जरूरत: एमपी 3, wav, आदि ...
यह कैसे करना है?फ़ाइल प्रकार कैसे निर्धारित करें?

+0

विस्तार से अलग, आपके लिए फ़ाइल प्रकार निर्धारित करता है? प्रत्येक फ़ाइल में मेटाडेटा नहीं है जो इसके प्रकार को निर्दिष्ट करता है। –

+0

एक फ़ाइल शीर्षलेख, जो एक फ़ाइल प्रकार निर्धारित करता है। ऑडियो फ़ाइल, वीडियो फ़ाइल, djvu फ़ाइल, आदि ... – Sergey

+3

आसान जवाब सिर्फ बाइट स्ट्रीम के रूप में फ़ाइल खोलने और पहले 20 या तो बाइट्स में पढ़ने के लिए है। लेकिन आपको सावधान रहना चाहिए, क्योंकि फ़ाइल के शीर्षलेख में हस्ताक्षर बाइट कैसे संग्रहीत किए जाते हैं, इसके लिए कोई वास्तविक मानक नहीं है। आपको या तो सभी सामान्य मामलों का परीक्षण करना होगा या कुछ तारकीय दस्तावेज उपलब्ध कराएंगे। –

उत्तर

0

आप यह पता लगा फाइल एक्सटेंशन का उपयोग कर सकते हैं:

using System.IO; 

class Program 
{ 
    static void Main() 
    { 
     string filepath = @"C:\Users\Sam\Documents\Test.txt"; 

     string extension = Path.GetExtension(filepath); 
     if (extension == ".mp3") 
     { 
      Console.WriteLine(extension); 
     } 
    } 
} 

फाइल एक्सटेंशन कॉल का पहला बिंदु ओएस यह पता लगाने की क्या फ़ाइल प्रकार से निपटने है, तुम सच में जानना चाहते हैं फ़ाइल प्रकार 100% इसे करने का एकमात्र तरीका फ़ाइल में पढ़ा जाता है। लेकिन इस एक पकड़ने के साथ आता है, छवि फ़ाइलों लेकिन यह एक पूरी तरह से चर फ़ाइल प्रकार के साथ एक छोटे से अधिक जटिल प्राप्त कर सकते हैं के रूप में वे एक बहुत आसान में शीर्ष लेख शामिल प्रारूप को पढ़ने के लिए आसान कर रहे हैं।

आप मदद का एक सा के लिए एक पुरानी पोस्ट पर this पोस्ट की जाँच कर सकते हैं। Here केवल मीडिया फ़ाइल प्रकारों को ढूंढने के बारे में एक पोस्ट है।

अंत में यह क्यों अपनी यह करने के लिए कोशिश कर रहा है पर निर्भर करता है।

+0

मैं विस्तार के रूप में विस्तार बदल सकता हूं, लेकिन मुझे फ़ाइल प्रकार पता होना चाहिए। – Sergey

-1
Path.GetExtension(PathToFile) 
+2

नहीं, यह फ़ाइल एक्सटेंशन देता है। लेकिन मुझे फ़ाइल प्रकार – Sergey

0

this पोस्ट देखें। आप फाइल से डेटा के पहले (ऊपर) 256 बाइट्स को फ़ाइल से FindMimeFromData (Urlmon.dll का हिस्सा) पास कर देते हैं।

2

आप क्या फ़ाइल यह समय की 100% काम करने के लिए गारंटी नहीं है है के रूप में एक उचित अनुमान लगाने के लिए एक्सटेंशन का उपयोग कर सकते हैं। आप Windows लक्षित कर रहे हैं तो यह समय की 99.9% के रूप में काम है कि कैसे विंडोज क्या फ़ाइल किस प्रकार है का ट्रैक रखता है जाएगा।

आप अपनी फ़ाइलों को गैर- Windows से स्रोतों केवल यकीन है कि जिस तरह से है फ़ाइल को खोलने और एक विशिष्ट स्ट्रिंग के लिए देखो या बाइट्स जो स्पष्ट रूप से यह पहचान करेगा के सेट करने के लिए मिल रहे हैं। उदाहरण के लिए, आप एक एमपी 3 फ़ाइल में ID3 tags के लिए दे सकता है:

ID3v1 टैग, 128 बाइट्स पर स्ट्रिंग टैग के साथ शुरुआत।

या

ID3v2 टैग चर आकार के होते हैं, और आम तौर पर, फ़ाइल के शुरू में पाए जाते हैं स्ट्रीमिंग मीडिया सहायता करने के लिए।

आप कितनी दूर जाते हैं इस पर निर्भर करता है कि आप अपने समाधान को कितना मजबूत बनाना चाहते हैं, और उस पर निर्भर करता है जो हमेशा मौजूद होता है।

यह इस तरह से दुर्भावनापूर्ण सामग्री के खिलाफ गार्ड जहां किसी एक एमपी 3 फ़ाइल (जैसे कि) के रूप में मैलवेयर का एक टुकड़ा पोस्ट और उम्मीद है कि यह सिर्फ एक कार्यक्रम का फायदा उठाने के कुछ होने का खतरा (एक बफर शायद लंघन) द्वारा संचालित की जाएगी मदद कर सकते हैं कर।

+0

+1 को इंगित करने के लिए फ़ाइल एक्सटेंशन को जानने की आवश्यकता है कि फ़ाइल एक्सटेंशन यह है कि विंडोज फ़ाइल के प्रकार को निर्धारित करता है (और इसलिए इसे किस एप्लिकेशन में खोलना चाहिए)। यदि यह विधि टूट जाती है, तो संभावना है कि फ़ाइल उपयोगकर्ता को "टूटा" है क्योंकि वे इसे विंडोज एक्सप्लोरर में नहीं खोल सकते हैं। मैक ओएस एक्स इसे अलग-अलग संभालने के लिए प्रयोग किया जाता था, लेकिन 10.6 के बाद से, वे फाइल एक्सटेंशन के साथ अंधेरे तरफ स्विच कर गए क्योंकि प्राथमिक मेटाडेटा उनके रचनाकारों के साथ फाइलों को जोड़ने के लिए उपयोग किया जाता था। –

+1

@ कोडी - मैक के बारे में दिलचस्प बिंदु, मैंने सोचा कि उन्होंने "यूनिक्स" विधि का उपयोग किया था। – ChrisF

+0

यह वास्तव में एक प्रकार कोड और संसाधन कांटा में एक निर्माता कोड एम्बेड करने के प्री-ओएस एक्स में उपयोग की जाने वाली बिफुरेटेड विधि के साथ पिछड़ा संगतता को संरक्षित करने के लिए काफी जटिल है। 10.4 में, ऐप्पल ने वर्दी टाइप आइडेंटिफ़ायर का उपयोग करना शुरू किया, जो कि विंडोज़ दुनिया में कुछ है जो केवल सपना देख सकता है। हालांकि, 10.6 तक, एक फ़ाइल अभी भी मौजूद होने पर अपने निर्माता कोड के आधार पर खोला गया था, लेकिन इस व्यवहार को तब से गिरा दिया गया है, और सभी दस्तावेज (विरासत निर्माता कोड वाले भी) फ़ाइल एक्सटेंशन का उपयोग विशेष रूप से करते हैं। –

5

खैर, सबसे मजबूत तरीका फ़ाइल प्रकारों आप का पता लगाने और फिर बस की कोशिश करना चाहते के लिए एक पार्सर लिखने के लिए हो सकता है - यदि कोई त्रुटि नहीं है, यह आप किस प्रकार की कोशिश की स्पष्ट रूप से है। हालांकि, यह एक महंगा दृष्टिकोण है, लेकिन यह सुनिश्चित करेगा कि आप फ़ाइल को सफलतापूर्वक लोड भी कर सकते हैं क्योंकि यह अर्थपूर्ण ध्वनि के लिए शेष फ़ाइल को भी देखेगा। शुरू में हस्ताक्षर या फ़ाइल के ज्ञात ऑफसेट -

एक बहुत कम खर्चीला संस्करण "जादू" बाइट्स देखने के लिए होगा। उदाहरण के लिए, यदि कोई फ़ाइल आईडी 3 टैग से शुरू होती है तो आप उचित रूप से सुनिश्चित कर सकते हैं कि यह एक एमपी 3 फ़ाइल है। अगर फ़ाइल RIFF¼↕☻ WAVEfmt से शुरू होती है, तो यह एक डब्ल्यूएवी फ़ाइल है।हालांकि, इस तरह की पहचान आपको गारंटी नहीं दे सकती कि फ़ाइल वास्तव में उस प्रकार का है - यह केवल हस्ताक्षर हो सकती है और उस कचरे का पालन कर सकती है।

+0

क्या होता है यदि वह उपयोग कर रहे lib/codec उन सभी फ़ाइल स्वरूपों को चला सकता है? –

संबंधित मुद्दे