簡體   English   中英

從Uri創建文件發生異常

[英]Create file from Uri exception occurs

從Uri創建文件時發生異常。 exception的值顯示為null。

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

請幫忙

提前致謝。

問題是從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);
}

從給定的Uri提取視頻文件路徑時,此答案是userfull

問題在於,uri.toString()生成設備字符串(文件:)和路徑本身。 您應該改用uri.getPath()。 返回的不是Path,而是String。 開始時可能帶有額外的/或\\。 您應該放開它,以便它在所有系統上都可以使用。 正確且獨立於操作系統的行將是:

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

在Win,Mac,Linux上可以在我們的項目上工作。

有幾件事可能是錯誤的。

首先,mediaUri可以為null

其次,readFile是您自己的方法(我想是),那么您應該發布該方法或在readFile中進行嘗試/捕獲。
原因是這樣的。 如果要按您的代碼進行操作,您正在創建一個不應包含任何數據的新文件,那么將readFile用於什么呢? 如果文件存在,並且mediaUri不為null,則null異常來自您的readFile方法。

您應該檢查mediaURI是否已更正文件路徑,我想它不是已更正文件路徑。

您能再解釋一下嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM