2012-07-13 24 views
0

我得到MIME類型的文件的MIME類型:如何得到一個文件,該文件已經在文件名中使用下面的代碼點在Android

private String getMimeType(String url) { 

     String type = null; 
     String extension = MimeTypeMap.getFileExtensionFromUrl(url); 
     Log.e("extension ", extension); 

     if (extension != null) { 
     MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     type = mime.getMimeTypeFromExtension(extension); 
     } 
     return type; 
    } 

    where url is the absolute file path 

    i am getting file and folder by the following way 
    File file_arr []; 
    file_arr = new File(Environment.getExternalStorageDirectory().getPath()).listFiles(); 
    url = file_arr[i].getAbsolutePath(); 

這是工作正確的,但它返回總是空爲其文件名中包含點「。」

對於示例

如果文件名是picture1.jpg則getMimeType()返回圖像/ JPEG

在文件名的情況下,具有點(。)在它的名字爲例27-05-2012 22.05.14.jpg然後getMimeType()返回null。

我已將文件重命名爲27-05-2012.jpg,它的返回圖像/ jpeg。

我的問題如何讓所有類型的文件名(這是有點或特殊字符)在Android上的MIME類型?請幫幫我。

+0

當文件名中有點時,MimeTypeMap.getFileExtensionFromUrl(url)返回的值是什麼?如果第一個點的所有內容都嘗試自己解析擴展。 – 2012-07-13 08:12:11

+0

@murali_ma問題是空的空間,如果你消除它將工作。 – Venky 2012-07-13 08:14:01

回答

9

如何:

File f = new File(file); 
System.out.println(new MimetypesFileTypeMap().getContentType(f)); 

或者

if(url.lastIndexOf(".") != -1) { 
    String ext = url.substring(url.lastIndexOf(".")+1); 
    MimeTypeMap mime = MimeTypeMap.getSingleton(); 
    String type = mime.getMimeTypeFromExtension(ext); 
    } else { 
    String type = null; 
    } 
+0

不要忘記檢查lastIndexOf!= -1。 – 2012-07-13 08:13:20

+0

謝謝@TamásSzincsák請求:) – 2012-07-13 08:14:53

+0

感謝它的工作 – 2012-07-13 11:41:02

1
private String getMimeType(String url) { 

    String fileExtension = MimeTypeMap.getFileExtensionFromUrl(url); 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
      fileExtension); 
    Toast.makeText(
      this, 
      "FileExtension: " + fileExtension + "\n" + "MimeType: " 
        + mimeType, Toast.LENGTH_LONG).show(); 
    return mimeType; 
} 

問題是空間中的文件名之間,試試這個代碼用於獲取MIME類型,即具有任何文件( 「。」,「 - 」,「_」)等...

試試這個,即使它會工作:27-05-20 ..... 1 222.05.14.jpg

+2

這不適用於其中包含空格的文件名。 fileExtension爲空。 – Nek 2013-06-20 16:36:31

相關問題