2014-09-06 81 views
0

我有一种方法应该根据选定的文件URI返回contentResolver返回的文件名和文件大小,但有时选择的文件没有扩展名。我正在寻找一种方法来获取完整的文件名及其扩展名或以某种方式确定文件类型的方法。下面是我的方法,我现在有使用扩展名获取完整文件名

//This is the intent which triggers the file choosing 
    Intent fileIntent = new Intent(); 
    fileIntent.setType("*/*"); 
    fileIntent.setAction(Intent.ACTION_GET_CONTENT); 
    fileIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
    startActivityForResult(fileIntent, REQUEST_CODE_FILE); 

    //Method in onActivityResult 
    Uri selectedFile = intent.getData(); 
    Cursor cursor = null; 
    String fileName = null; 
    int fileSize = 0; 
    try { 
     cursor = getContentResolver().query(selectedFile, null, null, null, null); 
     cursor.moveToFirst(); 
     fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); 
     fileSize = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE)); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    }finally { 
     if(cursor != null) { 
      cursor.close(); 
     } 
    } 

回答

1

我正在寻找一种方式来获得完整的文件名,其扩展

OpenableColumns.DISPLAY_NAME不必是一个文件名。

或一种方法来确定对ContentResolver文件类型

呼叫getType(),供应Uri。这应该返回Uri的有效MIME类型。

+0

我明白了,所以要清楚,没有真正的方法通过'ContentResolver'获得带扩展名的完整文件名?感谢关于'getType()'的建议。 – kabuto178 2014-09-06 15:13:38

+0

@ kabuto178:请理解'Uri'可能不是一个文件。你所问的等同于“我如何强制Web服务器给我扩展名为URL的完整文件名?”答案是,你不能,部分原因是URL可能不指向文件。相反,它可能是动态生成的东西。 Android上的Uri值也是如此。 – CommonsWare 2014-09-06 15:48:51

+0

我明白了,在这种情况下,我必须有点创意,然后才能保留名称和扩展名。干杯 – kabuto178 2014-09-06 15:52:35

相关问题