मेरे 5 सेंट के साथ चिप करने के लिए:
टी एल, डी आर
मैं MimetypesFileTypeMap का उपयोग करता हूं और ऐसा कोई भी माइम जो वहां नहीं है और मुझे विशेष रूप से इसकी आवश्यकता है, माइम.टाइप फ़ाइल में।
और अब, लंबे समय से पढ़ा:
सबसे पहले, MIME प्रकार की सूची बहुत बड़ी है , यहां देखें: https://www.iana.org/assignments/media-types/media-types.xhtml
मैं पहले JDK द्वारा प्रदान की गई मानक सुविधाओं का उपयोग करना पसंद करता हूं, और अगर यह काम नहीं करता है, तो मैं जाऊंगा और कुछ और देखूंगा।
फ़ाइल एक्सटेंशन से फ़ाइल प्रकार निर्धारित करें
1.6 के बाद से, जावा में MimetypesFileTypeMap है, जैसा कि ऊपर दिए गए किसी एक उत्तर में बताया गया है, और यह माइम प्रकार को निर्धारित करने का सबसे सरल तरीका है:
new MimetypesFileTypeMap().getContentType( fileName );
अपने वेनिला कार्यान्वयन में यह बहुत कुछ नहीं करता है (यानी यह .html के लिए काम करता है लेकिन यह .png के लिए नहीं है)। हालाँकि, आपके लिए आवश्यक किसी भी प्रकार की सामग्री को जोड़ना सरल है:
- अपनी परियोजना में META-INF फ़ोल्डर में 'mime.types' नाम की फ़ाइल बनाएँ
- प्रत्येक माइम प्रकार के लिए एक पंक्ति जोड़ें जो आपको चाहिए और डिफ़ॉल्ट कार्यान्वयन प्रदान नहीं करता है (समय के अनुसार जैसे-जैसे सैकड़ों माइम बढ़ते हैं और सूची बढ़ती है)।
पीएनजी और जेएस फाइलों के लिए उदाहरण प्रविष्टियां होंगी:
image/png png PNG
application/javascript js
Mime.types फ़ाइल प्रारूप के लिए, यहाँ और अधिक विवरण देखें: https://docs.oracle.com/javase/7/docs/api/javax/activation/MimetypesFileTypeMap.html
फ़ाइल सामग्री से फ़ाइल प्रकार निर्धारित करें
1.7 के बाद से, जावा में java.nio.file.spi.FileTypeDetector है , जो एक विशिष्ट प्रकार के कार्यान्वयन के लिए फ़ाइल प्रकार निर्धारित करने के लिए एक मानक एपीआई को परिभाषित करता है ।
फ़ाइल के लिए माइम लाने के लिए, आप बस फ़ाइलों का उपयोग करेंगे और अपने कोड में ऐसा करेंगे:
Files.probeContentType(Paths.get("either file name or full path goes here"));
एपीआई परिभाषा उन सुविधाओं के लिए प्रदान करती है जो फ़ाइल नाम से या फ़ाइल सामग्री (मैजिक बाइट्स) से फ़ाइल माइम प्रकार का निर्धारण करने के लिए समर्थन करती हैं। यही कारण है कि जांचसंपर्क टाइप () विधि IOException को फेंकता है, यदि इस एपीआई का कार्यान्वयन इसे प्रदान किए गए पथ का उपयोग करता है, तो वास्तव में इसके साथ जुड़ी फ़ाइल को खोलने का प्रयास करें।
फिर, इस का वैनिला कार्यान्वयन (जेडडीके के साथ आने वाला) वांछित होने के लिए बहुत कुछ छोड़ देता है।
दूर किसी आकाशगंगा में किसी आदर्श दुनिया में, ये सभी पुस्तकालय जो इस फ़ाइल-टू-माइम-प्रकार की समस्या को हल करने की कोशिश करते हैं , बस java.nio.file.spi.FileTypeDetector लागू करेंगे, आप पसंदीदा कार्यान्वयन लाइब्रेरी के जार में छोड़ देंगे अपने वर्गपथ में फ़ाइल करें और यही होगा।
वास्तविक दुनिया में, जहां आपको TL, DR सेक्शन की आवश्यकता होती है, आपको लाइब्रेरी को उसके नाम के आगे अधिकांश सितारों के साथ ढूंढना चाहिए और उसका उपयोग करना चाहिए। इस विशेष मामले के लिए, मुझे एक (अभी तक;) की आवश्यकता नहीं है।