2011-01-31 8 views
9

पर एप्लिकेशन/ऑक्टेट-स्ट्रीम लौटा रहा है। मैं एंड्रॉइड डिवाइस पर संग्रहीत फ़ाइलों के माइम/मीडिया प्रकार को निर्धारित करने की कोशिश कर रहा हूं (वास्तव में एक वर्चुअल डिवाइस जिसे मैं एमुलेटर के साथ उपयोग कर रहा हूं)। मैं इस संसाधन Get the MIME Type from a File जो javax.activation.MimetypesFileTypeMap की सिफारिश की नहीं मिला, हालांकि मैं सभी फ़ाइल प्रकारों के लिए application/octet-stream मिलता है जब मैं निम्नलिखित कोड चलाएँ:जावा MimetypesFileTypeMap हमेशा एंड्रॉइड एमुलेटर

MimetypesFileTypeMap map = new MimetypesFileTypeMap(); 
File dir = Environment.getExternalStorageDirectory(); 
File[] files = dir.listFiles(); 
String mimeType; 
for(int i = 0; i < files.length; ++i) { 
    if(files[i].isDirectory() == false) { 
     mimeType = map.getContentType(files[i]); 
     if(mimeType.toLowerCase().equals("application/octet-stream")) { 
      Log.d("mytag", 
       String.format("Unable to determine the mime type of file %s.", 
       files[i].getName())); 
     } 
    } 
} 

मैं निम्नलिखित विस्तार होने फाइलों के साथ इस परीक्षण किया है: जेपीजी, txt, डॉक्टर, xslx और पीडीएफ और वे सभी एक ही चीज़ लौटते हैं। क्या नक्शा आरंभ करने के लिए मुझे कुछ करना है? क्या इस पुस्तकालय को Android पर समर्थित माइम-प्रकार की सूची नहीं मिल सकती है? क्या Android पर फ़ाइल के माइम प्रकार को प्राप्त करने का कोई बेहतर तरीका है?

+0

मैं एक ही समस्या (एंड्रॉयड शामिल नहीं है), इस लिंक को देखने आ रही हैं http://stackoverflow.com/questions/ 6308142/add-mimetypes-to-mimetypesfiletypemap। मुझे लगता है कि हमें माइम प्रकारों की पूरी सूची के साथ एक पुनरावृत्ति फ़ाइल जोड़ने की आवश्यकता है, फिर भी कोशिश नहीं की गई है हालांकि –

उत्तर

13

इस समस्या को भी था। जावा डॉक्स के मुताबिक MimetypesFileTypeMap खोज

  1. प्रोग्रामेटिक रूप से MimetypesFileTypeMap इंस्टेंस में प्रविष्टियों को जोड़ा गया।
  2. फ़ाइल की .mime.types उपयोगकर्ता की होम निर्देशिका में।
  3. फ़ाइल /lib/mime.types
  4. फ़ाइल या संसाधनों नामित META-INF/माइम-प्रकार
  5. फ़ाइल या संसाधनों नामित META-INF/माइम-types.default (आमतौर पर केवल सक्रियण में पाया .jar फ़ाइल)

यदि आपका Mimetypes सभी के रूप में "application/ओकटेट धारा" बाहर आ रहे हैं यह संकेत मिलता है कि आप वर्तमान ऊपर फ़ाइलों की कोई नहीं है (या वे वर्तमान लेकिन अधूरा) कर रहे हैं और नहीं जोड़े हैं आपके MimetypesFileTypeMap इंस्टेंस में प्रविष्टियां।

हल करने के लिए ...

MimetypesFileTypeMap Mimetypes विनिर्देश प्रारूप

# comments start with hash marks 
# format is <mime type> <space separated file extensions> 
# for example, for an image mime type and a text mime type 
image png tif jpg jpeg bmp 
text txt text rtf TXT 
# either place those lines within the files specified by 2-4 or 

MimetypesFileTypeMap mtftp = new MimetypesFileTypeMap(); 
mtftp.addMimeTypes("image png tif jpg jpeg bmp") 

# and it's as easy as that! 
+0

कोशिश की .. यह काम किया !!! धन्यवाद!!! –

+0

MimetypesFileTypeMap दस्तावेज़ के अनुसार, सटीक फ़ाइल प्रारूप यह है: ** टेक्स्ट/सादा txt टेक्स्ट TXT ** (क्षमा करें, मैं इसे प्रारूपित नहीं कर सकता। :() – MGM

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