2011-03-21 71 views
1

從Uri創建文件併發生異常時。異常的值顯示爲空。從Uri創建文件異常發生

try { 
File mFile = new File(new URI(mediaUri.toString())); 
data = readFile(mFile);  
} catch (Exception e) { 
Log.e("Error", e.getLocalizedMessage()); 
} 

請幫

在此先感謝。

回答

-1

你應該檢查mediaURI被更正的文件路徑,我想它沒有更正文件路徑。

你能解釋一下更多嗎?

+2

@QBLive,你應該添加一個評論來回答問題或評論,而不是編輯答案 - 這很混亂。 – 2011-03-21 12:32:15

+0

文件路徑示例:file:///tmp/android.txt,並且不需要使用uri來進行字符串。文件具有uri參數的構造函數。參考http://developer.android.com/reference/android/net/Uri.html – Daniel 2011-03-21 12:38:05

0

一些事情可能是錯誤的。

首先,mediaUri可能是空

其次,是READFILE你自己的方法(我猜是),那麼應該張貼的方法或做你的try/catch在READFILE。
原因是這樣的。如果我要通過你的代碼,你正在創建一個不應該包含任何數據的新文件,那麼你用什麼readFile?如果文件存在,並且mediaUri不爲空,那麼null異常來自readFile方法。

1

的問題是在創建從URI

文件MFILE =新的文件的文件(新的URI(mediaUri.toString()));

的mediaUri.toString()不是從返回視頻文件的正確路徑來獲取視頻文件的正確路徑

File mFile = new File(new URI(getRealPathFromURI(contentUri)); 


    public String getRealPathFromURI(Uri contentUri) { 

    String[] proj = { MediaStore.Video.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

這個答案是userfull而從給定的獲取視頻文件路徑Uri

0

問題是,uri.toString()使設備(文件:)和路徑本身的字符串。您應該使用uri.getPath()。這不返回路徑,但返回字符串。在開始時可能會有額外的/或\。你應該放棄它,以便它可以在所有系統上運行。正確的和操作系統無關的行將是:

File mFile = new File(new Path(mediaUri.getPath()).toString); 

在我們的項目上運行win,mac,linux。