0

次のコードを使用して、ファイルの MIME タイプを取得します。

    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();

これは正しく機能していますが、ファイル名にドット " . " が含まれるファイルに対しては常に null を返します。

例として

ファイル名がpicture1.jpgの場合、getMimeType() はimage/jpeg を返します。

例27-05-2012 22.05.14.jpgのようにファイル名にドット (.) が含まれている場合、getMimeType() は null を返します。

ファイルの名前を 27-05-2012.jpg に変更しました。その戻り画像/jpeg です。

Androidですべてのタイプのファイル名(ドットまたは特殊文字を含む)のMIMEタイプを取得する方法を質問しますか? 私を助けてください。

4

2 に答える 2

12

これはどう:

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;
   }
于 2012-07-13T08:09:37.347 に答える
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.....1222.05.14.jpg

于 2012-07-13T08:18:27.577 に答える