從Uri創建文件併發生異常時。異常的值顯示爲空。從Uri創建文件異常發生
try {
File mFile = new File(new URI(mediaUri.toString()));
data = readFile(mFile);
} catch (Exception e) {
Log.e("Error", e.getLocalizedMessage());
}
請幫
在此先感謝。
從Uri創建文件併發生異常時。異常的值顯示爲空。從Uri創建文件異常發生
try {
File mFile = new File(new URI(mediaUri.toString()));
data = readFile(mFile);
} catch (Exception e) {
Log.e("Error", e.getLocalizedMessage());
}
請幫
在此先感謝。
你應該檢查mediaURI被更正的文件路徑,我想它沒有更正文件路徑。
你能解釋一下更多嗎?
一些事情可能是錯誤的。
首先,mediaUri可能是空
其次,是READFILE你自己的方法(我猜是),那麼應該張貼的方法或做你的try/catch在READFILE。
原因是這樣的。如果我要通過你的代碼,你正在創建一個不應該包含任何數據的新文件,那麼你用什麼readFile?如果文件存在,並且mediaUri不爲空,那麼null異常來自readFile方法。
的問題是在創建從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
問題是,uri.toString()使設備(文件:)和路徑本身的字符串。您應該使用uri.getPath()。這不返回路徑,但返回字符串。在開始時可能會有額外的/或\。你應該放棄它,以便它可以在所有系統上運行。正確的和操作系統無關的行將是:
File mFile = new File(new Path(mediaUri.getPath()).toString);
在我們的項目上運行win,mac,linux。
@QBLive,你應該添加一個評論來回答問題或評論,而不是編輯答案 - 這很混亂。 – 2011-03-21 12:32:15
文件路徑示例:file:///tmp/android.txt,並且不需要使用uri來進行字符串。文件具有uri參數的構造函數。參考http://developer.android.com/reference/android/net/Uri.html – Daniel 2011-03-21 12:38:05